このトピックでは、Workshop 製品ファミリとともに Tomcat サーバを設定して使用する方法について説明します。ここでは以下のトピックを取り扱います。
このトピックでは、開発用マシンにあらかじめローカルにサーバをインストール済みであるか、または開発に使用できるサーバ上であることを前提としています。サーバのインストール、設定、および管理については、Tomcat のドキュメントを参考にしてください。
サーバを定義するには、次の手順に従います。
[Apache] を展開して、適切なサーバを選択します。[次へ] をクリックして続行します。
(デフォルトの JRE だけでなく) 完全な JDK を指定する必要があります。
適切な値を入力して、[終了] をクリックして続行します。
[Select Project To Debug] フィールドでは、最初のプロジェクトが自動的に選択されています。プルダウンを使用すると、デバッグするプロジェクトを指定できます。
サーバ上では 1 度に 1 つのプロジェクトのみをデバッグできます。[Select Project To Debug] フィールドに表示されるのは、現在、デバッグ モードでの実行が許可されているプロジェクトです。このプロジェクトを必ずしもデバッグ モードで実行する必要はありませんが、サーバ上で別のプロジェクトをデバッグする場合は、この設定を変更してからアプリケーションをデバッグする必要があります。
サーバの定義を更新するには、次の手順を実行します。
[サーバの概要] からは、デプロイメントや実行時プロパティを参照したり設定したりできます。
[モジュールをワークスペースから直接実行します] オプションに注目してください。これは WTP の機能で、通常、アプリケーションを「展開された」モードで実行できるようにするものです。この場合、アプリケーションは直接ワークスペースから実行されます。Tomcat の場合、WTP ではデプロイメント用に WAR ファイルは作成されません。[モジュールをワークスペースから直接実行します] を選択すると、Workshop でワークスペースに Tomcat のコンフィグレーションのコピーが保持されます。このオプションを選択しないと、Workshop によって Tomcat インストール内のマスター コンフィグレーションが変更されます。
手動でのデプロイメントについては、ここをクリックしてください。
[Enable security] を選択すると、Tomcat サーバは (デフォルトの HTTP ではなく) HTTPS サーバとして実行されます。ただし、これは server.xml ファイル内の <connector> 要素のコメント (<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->) を非コメント化した場合のみです。
[Enable Tomcat debug mode] チェック ボックスは Workshop では無視されます。
Workshop では、JSP やその他の Struts アクションなどのアーティファクトのホット デプロイメントがサポートされます。
JSP を更新すると、自動的に変更がサーバにパブリッシュされ、[更新] ボタンを押すだけでそうした変更がサーバ上で実行されていることを確認できます。その他の変更は自動的にデプロイされ、必要に応じてアプリケーションが再起動されます。
Workshop では、Tomcat サーバ向けに Sysdeo DevLoader が統合されています。そのため、Web プロジェクトで依存しているプロジェクトや外部 (プロジェクトの WEB-INF/classes または WEB-INF/lib フォルダの外部) のライブラリ/クラスを使用できます。Workshop では外部参照が検知され、以下の手順が行われます。
Sysdeo DevLoader は展開形式 ([サーバの概要] の [モジュールをワークスペースから直接実行します] オプション) でも WAR デプロイメントでも機能します。
手動でのデプロイメントは Tomcat サーバではサポートされません。
リモート サーバ上 (または起動済みで IDE の「外部」で管理されているローカル サーバ上) でデバッグを行うには、サーバをリモート デバッグ用にコンフィグレーションし、手動でアプリケーションをデプロイしてから、リモート サーバのアドレスを定義する必要があります。
リモート デバッグ用のサーバのコンフィグレーションは、サーバ側の機能です。この情報は参考までに提供されています。最も確実な情報については、お使いのサーバのドキュメントを参考にしてください。
Tomcat 4.1.x の場合、IDE では標準 JPDA と自己生成された行マップが使用されます。
Tomcat 5.x の場合、IDE では標準 JPDA と自己生成された行マップが使用されます。JSR-45 のデバッグ情報は、アプリケーションの web.xml ファイルに次のようなサーブレットを配置して無効にする必要があります。
<servlet> <servlet-name>nitrox-debugger-tomcat5</servlet-name> <description>Added to compile JSPs without JSR-045 debug info</description> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>suppressSmap</param-name> <param-value>true</param-value> </init-param> <load-on-startup>3</load-on-startup></servlet> <servlet-mapping> <servlet-name>nitrox-debugger-tomcat5</servlet-name> <url-pattern>*.jsp</url-pattern></servlet-mapping>
Windows 上では \Tomcat 5.0\bin\catalina.bat (または \Tomcat 4.x\bin\catalina.bat)、Unix 上では同等のシェル スクリプトを開き、BAT ファイルの冒頭に以下の環境変数を定義します。
set JPDA_TRANSPORT=dt_socket set JPDA_ADDRESS=8453
以下のコマンドで Tomcat サーバを起動します。
catalina.bat jpda start
Tomcat サーバのコンソールに以下のメッセージが表示されます。
Listening for transport dt_socket at address: 8453
Tomcat 5.5 では Windows プラットフォーム上に catalina.bat は同梱されなくなっています。catalina.bat、setclasspath.bat をコピーすることで、Tomcat 5.0 のバッチ ファイルを再利用できます。Tomcat 5.5 に同梱される tomcat5w.exe という Windows アプリケーションでは、ユーザに Tomcat サーバの起動パラメータをカスタマイズするための GUI が提供されることになっています。しかし BEA のテストでは、[Java|Java Options] タブに以下を追加して、
-Xrunjdwp:transport=dt_socket,address=8453,server=y,suspend=n
リモート デバッグを有効にしようとしても、機能しないと見られる結果がでています。
リモート サーバ上でアプリケーションのデバッグを試行する前には、次の手順を実行する必要があります。
アプリケーションを物理的に別のマシンでリモート デバッグしている場合、デバッガで JSP のブレークポイントにヒットしても IDE では JSP 内の正しいソース行が表示されません。これは、Workshop で行をマップするために JSP サーブレット ソースを見つけようとしても、そのファイルが IDE で利用できないためです。
別のサーバ上でサーブレットのソースをデバッグできるようにするには、以下の (リモート サーバ上の) ディレクトリをローカルのディレクトリにマップします。続いて [ソース ルックアップ パス] ダイアログ、または [起動のコンフィグレーション] ダイアログ ([実行|実行] コマンド) の [ソース] タブを使用して、マップしたディレクトリを [ソース ルックアップ パス] に追加します。
Tomcat の場合、あらゆるバージョンで以下のディレクトリをマップします。
$CATALINA_BASE\work\Catalina\localhost\_
例 :
C:\Tomcat 5.0\work\Catalina\localhost\_
リモート サーバを定義するには、次の手順を実行します。
[接続タイプ] を [標準 (ソケット アタッチ)] に変更して、[ホスト] および [ポート] を指定します。
なお、リモート サーバ上でアプリケーションをデバッグする場合は、サーバの設定を更新する際に [モジュールをワークスペースから直接実行します] オプションを無効化しないようにする必要があります。
Linux オペレーティング システムで Tomcat 5.5 を使用してデバッグをしているときに、以下のエラー メッセージが表示される場合があります。
JSR45 デバッグ情報を無効にして、ブレークポイントと行ステップ実行が正しく機能するようにする必要があります。 web.xml の suppressSmap プロパティを true に設定し、デバッガを再起動してください。
このメッセージは、JSP サーブレットがコンパイルされる前に、最初の実行で JSR45 が無効になっていない場合に表示されます。
以降の実行のためにこの問題を解決するには、アプリケーションの JSP を修正して再コンパイルを強制します。