JBoss

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

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

JBoss 3.2.3 を使用している場合、より新しいバージョンへのアップグレードをお勧めします。Workshop では JBoss 3.2.8 よりも前のバージョンはサポートされません。JBoss 3.2.3 については、このドキュメントにある可能な回避策を参考にしてください。

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

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

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

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

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

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

    [次へ] をクリックして続行します。

  7. 次の画面では、JBoss の追加設定を指定します。

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

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

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

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

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

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

サーバの定義を更新する

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

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

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

    [モジュールをワークスペースから直接実行します] オプションに注目してください。これは WTP の機能で、アプリケーションを「展開された」モードで実行できるようにするものです。この場合、アプリケーションは直接ワークスペースから実行されます。アプリケーションを WAR ファイルにコンパイルしてデプロイする場合は、このオプションのチェックをはずす必要があります。

    手動でのデプロイメントについては、ここをクリックしてください。

  2. また、[プロパティ] タブをクリックして、サーバのコンフィグレーション時に設定したプロパティを変更することもできます。

 

ホット デプロイメント

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" %>

アプリケーションを手動でデプロイする

アプリケーションを手動でデプロイするには、代わりのコンフィグレーションを作成する必要があります。代わりのコンフィグレーションの作成方法については、お使いのサーバのドキュメントを参考にしてください。

代わりのコンフィグレーションをデプロイするには、次の手順を実行します。

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

    手動でのデプロイメントは、[モジュールをワークスペースから直接実行します] オプションが選択されている場合にのみ許可されています。

    以下の画面が表示され、この画面でカスタム コンフィグレーション XML ファイルを指定できます。

     

リモート デバッグを使用する

リモート サーバ上 (または起動済みで IDE の「外部」で管理されているローカル サーバ上) でデバッグを行うには、サーバをリモート デバッグ用にコンフィグレーションしてから、リモート サーバのアドレスを定義する必要があります。

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

リモート サーバ上 (または起動済みで IDE の「外部」で管理されているローカル サーバ上) でデバッグを行うには、サーバをリモート デバッグ用にコンフィグレーションし、手動でアプリケーションをデプロイしてから、リモート サーバのアドレスを定義する必要があります。

JBoss 4.0

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> 
  

JBoss 3.2.4+

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 (すべてのバージョン)

<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

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

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

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

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

アプリケーションを物理的に別のマシンでリモート デバッグしている場合、デバッガで 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\_

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

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

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

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

  3. [リモート VM の終了を許可] チェック ボックスでは、サーバがトランザクション途中であっても IDE でサーバのハードを停止できるようになるので、このチェック ボックスの使用はお勧めしません。
  4. [適用] をクリックして変更を保存します。
  5. [デバッグ] をクリックして、アプリケーションをデバッグ モードで実行します。

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


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