この記事はSpring Framework Advent Calendar 2012の一日目の記事です。
SpringMVCやSpringDataを使って開発する際、最初の開発プロジェクト構築が面倒くさい。 pom.xmlにあれこれ設定して、各種設定ファイルにお決まりの設定をして、、 STSにはSpringMVCの雛形プロジェクトを作成できるが、あれで作成される内容は不十分。。結局自分でカスタマイズする必要があり、結構時間がかかる。
自分はこういう作業をskipするためによくテンプレートプロジェクトを作成して、コピーして使っていた。maven-archetypeでもいいのだが若干面倒くさい。
SpringToolSuite3からは実はテンプレートプロジェクトをカスタマイズする機能が追加されているので、普段使っているテンプレートプロジェクトをSTS対応させてみた。
前提条件
(spring-tool-suite-3.1.0.RELEASE-e3.8-macosx-cocoa-x86_64で検証)
カスタムテンプレートプロジェクトの設定
"Preferences" -> "Spring" -> "Template Projects"にいって"add"をクリック. 名前に"custom-template"(何でもOK)、URLに"https://github.com/making/spring-webapp-template/raw/master/template/descriptors.xml"を設定。
"OK"をクリック
テンプレートプロジェクトを作成する
"File" -> "New" -> "Spring Template Project"に行って"Spring Web Application Template Project"を選択(新しく追加されている!).
"Next"をクリック. 初回はテンプレートプロジェクトをダウンロードする。
"Yes"をクリック.
プロジェクト情報を入力して"Finish"をクリック.
テンプレートプロジェクトがworkspaceに出来上がる.
プロジェクトを右クリックして"Configure" -> "Convert to Maven Project"を選択.
アプリケーションの起動
プロジェクトを右クリックして "Run As" -> "Run on Server"を選択.
"VMware vFabric tc Server Developer Edition vx.x"を選択して"Finish"をクリック.
次のように出力される.
簡単にプロジェクトを作成してスタートできた。 次回はこのテンプレートプロジェクトのプロジェクト構成を簡単に説明しよう。
トラブルシューティング
あるあるのはまりポイント
Cannot create JDBC driver
問題
00:50:18 [tomcat-http--4] [DEBUG] [o.h.e.transaction.spi.AbstractTransactionImpl ] - begin
Cannot create JDBC driver of class 'net.sf.log4jdbc.DriverSpy' for connect URL 'jdbc:log4jdbc:h2:mem:projectName;MODE=PostgreSQL'
java.sql.SQLException: No suitable driver
が発生する。APサーバー(tomcat)が JDBCドライバを見つけられていない. デフォルトでH2が設定されている.
解
JDBCドライバをAPサーバー(tomcat)のlibに置く。
cp $HOME/.m2/repository/com/h2database/h2/x.x.x/h2-x.x.x.jar $STS_HOME/vfabric-tc-server-developer-x.x.x.RELEASE/tomcat-x.x.x.RELEASE/lib/
Out of memory: PermGen space
問題
java.lang.OutOfMemoryError: PermGen space
が発生して起動しない。
解
Permサイズを大きくする。JVMオプションに -XX:PermSize=256m
.
jarが多いのでTomcatのデフォルト値だとPermサイズが足りない。 tc serverを使う場合は最初から設定されている。
2日目は@mike_neckさん、よろ!