このトピックでは、Workshop 製品ファミリとともに JBoss サーバを設定して使用する方法について説明します。ここでは以下のトピックを取り扱います。
このトピックでは、開発用マシンにあらかじめローカルにサーバをインストール済みであるか、または開発に使用できるサーバ上であることを前提としています。サーバのインストール、設定、および管理については、JBoss のドキュメントを参考にしてください。
JBoss 3.2.3 を使用している場合、より新しいバージョンへのアップグレードをお勧めします。Workshop では JBoss 3.2.8 よりも前のバージョンはサポートされません。JBoss 3.2.3 については、このドキュメントにある可能な回避策を参考にしてください。
サーバを定義するには、次の手順に従います。
[JBoss] を展開して、適切なサーバを選択します。[次へ] をクリックして続行します。
(デフォルトの JRE だけでなく) 完全な JDK を指定する必要があります。
[次へ] をクリックして続行します。
適切な値を入力して、[終了] をクリックして続行します。
[Select Project To Debug] フィールドでは、最初のプロジェクトが自動的に選択されています。プルダウンを使用すると、デバッグするプロジェクトを指定できます。
サーバ上では 1 度に 1 つのプロジェクトのみをデバッグできます。[Select Project To Debug] フィールドに表示されるのは、現在、デバッグ モードでの実行が許可されているプロジェクトです。このプロジェクトを必ずしもデバッグ モードで実行する必要はありませんが、サーバ上で別のプロジェクトをデバッグする場合は、この設定を変更してからアプリケーションをデバッグする必要があります。
サーバの定義を更新するには、次の手順を実行します。
[サーバの概要] からは、デプロイメントや実行時プロパティを参照したり設定したりできます。
[モジュールをワークスペースから直接実行します] オプションに注目してください。これは WTP の機能で、アプリケーションを「展開された」モードで実行できるようにするものです。この場合、アプリケーションは直接ワークスペースから実行されます。アプリケーションを WAR ファイルにコンパイルしてデプロイする場合は、このオプションのチェックをはずす必要があります。
手動でのデプロイメントについては、ここをクリックしてください。
Workshop では、JSP やその他の Struts アクションなどのアーティファクトのホット デプロイメントがサポートされます。
JSP を更新すると、自動的に変更がサーバにパブリッシュされ、[更新] ボタンを押すだけでそうした変更がサーバ上で実行されていることを確認できます。その他の変更は自動的にデプロイされ、必要に応じてアプリケーションが再起動されます。
Workshop では、JBoss サーバ向けに Workshop DevLoader (Tomcat 向けの Sysdeo DevLoader に類似したもの) が統合されています。そのため、依存しているプロジェクトや外部 (プロジェクトの WEB-INF/classes または WEB-INF/lib フォルダの外部) のライブラリ/クラスを Web プロジェクトで使用できます。Workshop では外部参照が検知され、以下の手順で解決されます。
これに加えて、ユーザが手動で jboss- \server\default\deploy\jbossweb-tomcatxx.sar\META-INF\jboss-service.xml ファイル内の UseJBossWebLoader フラグ (<attribute name="UseJBossWebLoader">true</attribute>) を有効化し、サーバを再起動する必要があります。
なお、Workshop DevLoader が機能するのは展開されたモードの場合のみです ([サーバの概要] の [モジュールをワークスペースから直接実行します] オプション)。
Workshop DevLoader で可能になるのは Web アプリケーションから JAR ファイル由来の Java クラスへのアクセスのみです。JAR ファイルに JSP タグ ライブラリ定義 (tag LIBRARY definition: tld) があり、その JSP で以下のような絶対 URI を使用して
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>TLD へのアクセスが指定されている場合、JSP コンパイラは失敗します。
これを回避するには、tld を抽出して /WEB-INF にコピーし、以下のような相対 URI で参照します。
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
アプリケーションを手動でデプロイするには、代わりのコンフィグレーションを作成する必要があります。代わりのコンフィグレーションの作成方法については、お使いのサーバのドキュメントを参考にしてください。
代わりのコンフィグレーションをデプロイするには、次の手順を実行します。
手動でのデプロイメントは、[モジュールをワークスペースから直接実行します] オプションが選択されている場合にのみ許可されています。
以下の画面が表示され、この画面でカスタム コンフィグレーション XML ファイルを指定できます。
リモート サーバ上 (または起動済みで IDE の「外部」で管理されているローカル サーバ上) でデバッグを行うには、サーバをリモート デバッグ用にコンフィグレーションしてから、リモート サーバのアドレスを定義する必要があります。
リモート サーバ上 (または起動済みで IDE の「外部」で管理されているローカル サーバ上) でデバッグを行うには、サーバをリモート デバッグ用にコンフィグレーションし、手動でアプリケーションをデプロイしてから、リモート サーバのアドレスを定義する必要があります。
Workshop は、標準 JPDA と自己生成された行マップを使用します。JSR-45 のデバッグ情報は、アプリケーションの web.xml ファイルに次のようなサーブレットを配置して無効にする必要があります。
<servlet> <servlet-name>nitrox-debugger-jboss4</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-jboss4</servlet-name> <url-pattern>*.jsp</url-pattern></servlet-mapping>
Workshop は、標準 JPDA と自己生成された行マップを使用します。JSR-45 のデバッグ情報は、アプリケーションの web.xml ファイルに次のようなサーブレットを配置して無効にする必要があります。
<servlet> <servlet-name>nitrox-debugger-jboss32</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-jboss32</servlet-name> <url-pattern>*.jsp</url-pattern></servlet-mapping>
<JBoss のインストール ディレクトリ >\bin フォルダにある run.bat を開いて、この BAT ファイルの冒頭に以下の環境変数を定義します。
set JAVA_OPTS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8453,server=y,suspend=n
run.bat を使用して JBoss を起動します。JBoss サーバのコンソールに以下のメッセージが表示されます。
Listening for transport dt_socket at address: 8453
リモート サーバ上でアプリケーションのデバッグを試行する前には、次の手順を実行する必要があります。
アプリケーションを物理的に別のマシンでリモート デバッグしている場合、デバッガで JSP のブレークポイントにヒットしても IDE では JSP 内の正しいソース行が表示されません。これは、Workshop で行をマップするために JSP サーブレット ソースを見つけようとしても、そのファイルが IDE で利用できないためです。
別のサーバ上でサーブレットのソースをデバッグできるようにするには、以下の (リモート サーバ上の) ディレクトリをローカルのディレクトリにマップします。続いて [ソース ルックアップ パス] ダイアログ、または [起動のコンフィグレーション] ダイアログ ([実行|実行] コマンド) の [ソース] タブを使用して、マップしたディレクトリを [ソース ルックアップ パス] に追加します。
For JBoss 4.0.x and 3.2.x
$JBOSS_ROOT\server\default\work\jboss.web\localhost\[CONTEXT_ROOT]
e.g.:
C:\jboss-4.0.3SP1\server\default\work\jboss.web\localhost\_
リモート サーバを定義するには、次の手順を実行します。
[接続タイプ] を [標準 (ソケット アタッチ)] に変更して、[ホスト] および [ポート] を指定します。
なお、リモート サーバ上でアプリケーションをデバッグする場合は、サーバの設定を更新する際に [モジュールをワークスペースから直接実行します] オプションを無効化しないようにする必要があります。