←フエルチラシノウラ。トップページへもどる。

eclipseからシンプルにtomcatをデバッグ起動する方法 - SysdeoプラグインやWTPを使わずにデバッグする。

tomcat デバッグ eclipse プラグイン sysdeo wtp 実行 複数起動 maven2

eclipseからシンプルにtomcatをデバッグ起動する方法 - SysdeoプラグインやWTPを使わずにデバッグする。

ウェブアプリをシンプルにデバッグ実行したい。


eclipse で webアプリを開発する時、tomcatプラグインを入れたり、eclipseWTPを使ったりして開発する方が多いと思います。
でも、これらのプラグインはいまいちなところも多いです。たとえば、起動に時間が掛かるとか複数のインスタンスを立ち上げるのが面倒だとか。。。
そこで今回は、特別なtomcatプラグインに頼らずに、まるで普通のJavaアプリケーションのようにtomcatを起動してwebアプリをデバッグ開発する方法を書いてみます。

前提


プロジェクト構成は、maven2を想定しています。
maven2のプロジェクト構成といえばご存知かと思いますがこんなフォルダ構成です。
src/main/java/
src/main/resources/
src/test/java/
src/test/resources/
src/main/webapp/


さて、今回のプロジェクト名は以下とします。
Hoge


絶対パスは以下とします。
C:/workspace/Hoge


TOMCAT_HOME は以下に存在することにします。
C:/apache-tomcat-6


eclipseの設定


1) 実行設定


eclipse の 「実行ダイアログを開く」でダイアログを開き以下の設定を行う。
プロジェクト: Hoge
メインクラス: org.apache.catalina.startup.Bootstrap
引数: start
VM引数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="C:/apache-tomcat-6/conf/logging.properties" -Djava.endorsed.dirs="C:/apache-tomcat-6/endorsed" -classpath "C:/Program Files/Java/jdk1.6.0_03/lib/tools.jar;C:/apache-tomcat-6/bin/bootstrap.jar" -Dcatalina.base="target/classes" -Dcatalina.home="C:/apache-tomcat-6" -Djava.io.tmpdir="C:/apache-tomcat-6/temp"


VM引数の設定では、catalina.base の "target/classes" がミソ。
target/classes に tomcat の conf を配置する設定をこの後行います。

2) ビルドパス設定


プロジェクトのプロパティから「Javaのビルドパス」を選択し、「ソース」タブを開きます。
maven2なプロジェクトの構成になっていると思いますが、そこに以下のソースフォルダーを追加します。

ソースフォルダー: Hoge/src/main/webapp


追加したソースフォルダの出力先は以下に設定します。

出力フォルダー: Hoge/target/Hoge


次に、「ライブラリ」タブを開きます。
既に「JREシステムライブラリー」や「Maven Dependencies」が追加されていると思いますが、「外部JARの追加」ボタンを押して以下のライブラリを必ず追加します。
これは重要!


C:/apache-tomcat-6/bin/bootstrap.jar
C:/apache-tomcat-6/bin/tomcat-juli.jar


3) プロジェクトにCATALINA_BASEを追加


src/main/resources に C:/apache-tomcat-6/conf フォルダをコピペ。
ちなみに conf の中には以下のようなファイルが入っています。

catalina.policy
catalina.properties
logging.properties
server.xml
tomcat-users.xml
web.xml


次に、コピペしたファイルのうち、server.xml の以下の部分を修正。
appBase属性を環境に合わせて修正しています。


<Host name="localhost" appBase="C:/workspace/Hoge/target"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">


これで target の配下が appBase となり、eclipseでビルドしたときにtarget配下に作成されるWebアプリ「Hoge」がtomcatにより参照されるようになります。
つまり、先ほどの 2) ビルドパス設定 で行ったソースフォルダーの設定はここで効いてくるわけです。
ビルドする度にjspその他が target/Hoge にコピーされるため、Tomcatの再起動をしなくても直ぐにjspソースなどが反映されて開発が楽になります。
Tomcatをデバッグ起動しておけば、Javaソースも再起動することなく反映されるので、かなりお勧めです。

おまけ:
server.xml の設定でプロジェクトごとにポートを変えておけば、複数のeclipseプロジェクトでそれぞれのTomcatインスタンスを起動することもできます。

試してみる。


1) 実行設定 で作成した実行構成を実行してみてください。
コンソールにException無く起動できれば成功です。

追記:

SAStrutsのeclipse開発環境を作る場合の注意点。


SAStrutsとSeasar2を利用したWebアプリを開発する際、以下の点に注意が必要です。。
今回のやり方でプロジェクトを構築すると、tomcatは正常に起動しますが、sa-struts-tutorial(v.1.0.4-sp1) を開こうとするとExceptionが発生してうまく動きません。
どうやら S2Container が null になっているようですが、それ以上はちゃんと調べてません。
解決方法としては、eclipseプロジェクトのプロパティの「Javaのビルドパス」を開いて、
「ライブラリ」タブの「ライブラリーの追加」で「サーバランタイムの追加」をする必要があります。
たとえばローカルにインストールされているTomcatが v6.0 の場合は "Apache Tomcat v6.0" のサーバランタイムを追加することになります

どうしても起動しなくて原因が分からないときは、基本に戻って catalina.base (この場合だと target/classes) の下に生成される logs フォルダ内のログをチェックしましょう。
起動時のコンソールに出ていないエラーログが吐かれている場合があるので、何らかの手がかりになるかもしれません。

http://goodjob.boy.jp/chirashinoura/id/189.html

作成日: 2008-10-18 12:03:56

最終更新日: 2008-10-31 11:28:30

▲このページの上へ