Tomcat

このトピックでは、Workshop 製品ファミリとともに Tomcat サーバを設定して使用する方法について説明します。ここでは以下のトピックを取り扱います。

このトピックでは、開発用マシンにあらかじめローカルにサーバをインストール済みであるか、または開発に使用できるサーバ上であることを前提としています。サーバのインストール、設定、および管理については、Tomcat のドキュメントを参考にしてください。

IDE 内部でサーバを定義する

サーバを定義するには、次の手順に従います。

  1. 最初にアプリケーションを実行する前に、[実行|デバッグ] コマンドでサーバを定義します。
  2. 新しくサーバを定義するには、[J2EE Server] を右クリックして、[新規] を選択します。
  3. 次の画面で、はじめに [名前] フィールドにサーバの名前を指定します。 この名前は IDE 内部でのみ使用されるものです。

  4. 次に、[新規] をクリックしてサーバ タイプを指定します。
  5. [Apache] を展開して、適切なサーバを選択します。[次へ] をクリックして続行します。

  6. 次のダイアログでは、Tomcat の設定を指定する必要があります。

    (デフォルトの JRE だけでなく) 完全な JDK を指定する必要があります。

  7. 適切な値を入力して、[終了] をクリックして続行します。

  8. 再び [デバッグ] ダイアログが表示されます。 ([Deployed Projects] ボックスの横) をクリックして、このサーバにデプロイするプロジェクトを指定します。

  9. [終了] をクリックすると、指定したプロジェクトが [Deployed Projects] ボックスにリストされます。

    [Select Project To Debug] フィールドでは、最初のプロジェクトが自動的に選択されています。プルダウンを使用すると、デバッグするプロジェクトを指定できます。

    サーバ上では 1 度に 1 つのプロジェクトのみをデバッグできます。[Select Project To Debug] フィールドに表示されるのは、現在、デバッグ モードでの実行が許可されているプロジェクトです。このプロジェクトを必ずしもデバッグ モードで実行する必要はありませんが、サーバ上で別のプロジェクトをデバッグする場合は、この設定を変更してからアプリケーションをデバッグする必要があります。

  10. [接続タイプ] のデフォルト設定は、IDE 内で管理されているローカル サーバについてのものです。[適用] をクリックすると、サーバの定義が完了します。[サーバ] ビューに新しいサーバ エントリが表示されます。
  11. この時点でアプリケーションをデバッグする場合は、[デバッグ] をクリックすると、選択されているアプリケーションがデバッグ モードで実行されます。 それ以外の場合は、[閉じる] をクリックします。

     

サーバの定義を更新する

サーバの定義を更新するには、次の手順を実行します。

  1. [サーバ] ビューでサーバ名をダブル クリックすると、[サーバの概要] が表示されます。

    [サーバの概要] からは、デプロイメントや実行時プロパティを参照したり設定したりできます。

    [モジュールをワークスペースから直接実行します] オプションに注目してください。これは 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 の「外部」で管理されているローカル サーバ上) でデバッグを行うには、サーバをリモート デバッグ用にコンフィグレーションし、手動でアプリケーションをデプロイしてから、リモート サーバのアドレスを定義する必要があります。

手順 1: リモート デバッグが許可されるようにサーバをコンフィグレーションする

リモート デバッグ用のサーバのコンフィグレーションは、サーバ側の機能です。この情報は参考までに提供されています。最も確実な情報については、お使いのサーバのドキュメントを参考にしてください。

Tomcat 4.x -5.0

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

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

リモート デバッグを有効にしようとしても、機能しないと見られる結果がでています。

手順 2: リモート デバッグ用にアプリケーションを準備する

リモート サーバ上でアプリケーションのデバッグを試行する前には、次の手順を実行する必要があります。

  1. アプリケーションをビルドします ([自動的にビルド] が設定されている場合には不要)。
  2. アプリケーションを手動でデプロイします。展開されたアプリケーションとしてデプロイすることも、WAR または EAR ファイルを使用してデプロイすることもできます。
  3. work/temp ディレクトリの内容を消去して、デバッグ情報のないファイルを削除します。
  4. デプロイしたアプリケーションのバージョンが IDE のバージョンと一致していることを確認します。

手順 3: (省略可能) 別のサーバ上での JSP サーブレット ソースのデバッグを有効化する

アプリケーションを物理的に別のマシンでリモート デバッグしている場合、デバッガで JSP のブレークポイントにヒットしても IDE では JSP 内の正しいソース行が表示されません。これは、Workshop で行をマップするために JSP サーブレット ソースを見つけようとしても、そのファイルが IDE で利用できないためです。

別のサーバ上でサーブレットのソースをデバッグできるようにするには、以下の (リモート サーバ上の) ディレクトリをローカルのディレクトリにマップします。続いて [ソース ルックアップ パス] ダイアログ、または [起動のコンフィグレーション] ダイアログ ([実行|実行] コマンド) の [ソース] タブを使用して、マップしたディレクトリを [ソース ルックアップ パス] に追加します。

Tomcat の場合、あらゆるバージョンで以下のディレクトリをマップします。
$CATALINA_BASE\work\Catalina\localhost\_
例 :
C:\Tomcat 5.0\work\Catalina\localhost\_

手順 4: リモート サーバを定義して、アプリケーションをデバッグする

リモート サーバを定義するには、次の手順を実行します。

  1. サーバを定義します。
  2. [実行|デバッグ] の順にクリックして、リモート操作向けにサーバの定義を変更します。 [J2EE Server] の下に表示されるお使いのサーバ名をクリックします。

    [接続タイプ] を [標準 (ソケット アタッチ)] に変更して、[ホスト] および [ポート] を指定します。

  3. [リモート VM の終了を許可] チェック ボックスでは、サーバがトランザクション途中であっても IDE でサーバのハードを停止できるようになるので、このチェック ボックスの使用はお勧めしません。
  4. [適用] をクリックして変更を保存します。(以下のスクリーン ショットでは、実際にはローカルにインストールされているが IDE の外部で管理されている「リモート」サーバを例示しています)。

  5. [デバッグ] をクリックして、アプリケーションをデバッグ モードで実行します。

なお、リモート サーバ上でアプリケーションをデバッグする場合は、サーバの設定を更新する際に [モジュールをワークスペースから直接実行します] オプションを無効化しないようにする必要があります。

トラブルシューティング

Tomcat 5.5 でブレークポイントがヒットしない (Linux のみ)

Linux オペレーティング システムで Tomcat 5.5 を使用してデバッグをしているときに、以下のエラー メッセージが表示される場合があります。

    JSR45 デバッグ情報を無効にして、ブレークポイントと行ステップ実行が正しく機能するようにする必要があります。
    web.xml の suppressSmap プロパティを true に設定し、デバッガを再起動してください。

このメッセージは、JSP サーブレットがコンパイルされる前に、最初の実行で JSR45 が無効になっていない場合に表示されます。

以降の実行のためにこの問題を解決するには、アプリケーションの JSP を修正して再コンパイルを強制します。


さらにヘルプが必要ですか。質問は workshop ニュース グループまでお寄せください。