OC4Jでのリモート・デバッグ

ここでは、Oracle9iAS Container for J2EE(OC4J)をリモートのデバッグ対象プロセス(デバッグするプログラム)として設定して、リモート・デバッグを実行する方法を説明します。

注意: JDeveloperで動作する埋込みOC4Jサーバーを使用してリモート・デバッグを実行する場合、環境はすでに設定されているため、ステップ2を省略できます。

ただし、次の場合はすべてのステップを実行する必要があります。

次のステップを完了すると、JDeveloperを使用して、OC4JでJSP、サーブレットおよびEnterprise JavaBeans(EJB)をリモート・デバッグできます。

JSP、サーブレットおよびEJBをリモート・デバッグするようにOC4Jを設定するには、次のようにします。

  1. ウィザードを使用してリモート・デバッグ・プロジェクトを作成します。
  2. OC4Jホーム・ディレクトリに、必要なJDeveloperランタイムJARファイルをコピーします。
  3. OC4Jサーブレット・ファイルを編集して、すべてのWebサイトをバインドします。
  4. コマンドラインからOC4Jをデバッグ・モードで起動します。
  5. デバッグ対象プロセスの設定およびリモート・デバッグ対象プロセスのインスタンス化が完了したら、ナビゲータでリモート・デバッグするプロジェクトを選択し、ツールバーのdebug_iconをクリックして、デバッガをデバッグ対象プロセスに接続できます。
    「OJVMにアタッチ」ダイアログまたは「JPDAにアタッチ」ダイアログが表示され、ここで、JDeveloperのデバッガとデバッグ対象プロセス(デバッグするプログラム)の間の接続を確立できます。
  6. デバッグ対象プロセスへのデバッガの接続後、デバッグ対象プロセスは、自動的に停止または一時停止されません。ユーザーがこれを実行する必要があります。たとえば、JDeveloperでは、リモート・デバッグで、JSPまたはサーブレットのブラウザが自動的には開かれません。JSPまたはサーブレットのブラウザを開くと、デバッガはJSPコードまたはサーブレット・コードのブレークポイントで停止します。EJBをデバッグする場合は、デバッガがEJBコードのブレークポイントで停止するよう、EJBクライアントを実行する必要があります。
  7. 問題が発生した場合は、「トラブルシューティング」を参照してください。

OC4Jホーム・ディレクトリへのJDeveloperランタイムJARファイルのコピー

注意: これらのファイルの中には、OC4J 2.0のインストールで該当する場所にすでにインストールされているものもあります。その場合、これらのファイルをOC4Jホーム・ディレクトリにコピーする必要はありません。

  1. <jdev_install>/libディレクトリで、xmlparserv2.jar<OC4J_HOME>/libにコピーします。
  2. <jdev_install>/jdev/libディレクトリで、ojc.jarjdev-rt.jar<OC4J_HOME>/libにコピーします。
  3. <jdev_install>/j2ee/home/libディレクトリで、ojsp.jar<OC4J_HOME>/libにコピーします。
  4. <jdev_install>/j2ee/home/jsp/lib/taglibディレクトリで、ojsputil.jar<OC4J_HOME>/libにコピーします。

注意: このディレクトリに入れたJARは、自動的にOC4Jクラスパスに追加されます。

関連資料: 『Oracle9iAS Containers for J2EE JavaServer Pages開発者ガイド』(OTN-Jから入手可能)

すべてのWebサイトにバインドされるサーブレットを設定するOC4J固有ファイルの編集

  1. <OC4J_HOME>/configディレクトリで、テキスト・エディタにglobal-web-application.xmlを開きます。
  2. 次のセクションを編集します。

    <orion-web-app
    jsp-cache-directory="./persistence"
    servlet-webdir="/servlet"
    development="false"
    >
    development="false"development="true"に変更して、サーブレットのデバッグを有効にします。

  3. テキスト・エディタでglobal-web-application.xmlファイルに次の行を追加して、サーブレット・タグを追加し、OJSPのデバッグ・オプションを設定します。

    <servlet> <servlet-name>jsp</servlet-name> <servlet-class>oracle.jsp.runtimev2.JspServlet</servlet-class> <init-param> <param-name>debug_mode</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>developer_mode</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>encode_to_java</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>emit_debuginfo</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>jspjavacompiler</param-name> <param-value>oracle.jdevimpl.jsp.JspOjcCompiler</param-value> </init-param> </servlet>

コマンドラインからOC4Jをデバッグ・モードで起動

  1. <OC4J_HOME>ディレクトリに移動します。
  2. OC4Jの環境に基づいて、適切なコマンドを発行します。
  3. Windows NTでOC4JとOJVMを接続する場合:
    java -ojvm -XXdebug,port4000,detached,quiet -jar oc4j.jar

    -XXdebugのパラメータ・オプションは次のとおりです。
    detached
    Javaプログラムを即座に起動し、デバッガをいつでも接続できるようにします。このオプションを使用しない場合、Javaプログラムは、デバッガが接続されるまで停止します。
    port <#>
    デバッガは、指定したポートに接続する必要があります。このオプションを指定しない場合、デフォルト・ポートは4000です。
    quiet
    接続メッセージを出力しません。このオプションを指定しない場合、接続メッセージは標準エラーに送信されます。

    Windows NTおよびUNIXでOC4JとClassic VMを接続する場合:
    java -classic -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000 -jar oc4j.jar
    Windows NTおよびUNIXでOC4JとHotSpot VMを接続する場合:
    java -server -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000 -jar oc4j.jar

注意: JSPまたはサーブレットのブラウザを開くか、またはEJBクライアントを実行し、デバッガがコードのブレークポイントで停止するようにします。

トラブルシューティング

ブラウザからサーブレットまたはJSPにアクセスできない場合:

デバッガがJSPのブレークポイントで停止しない場合:


Javaプログラムのリモート・デバッグについて
デバッグ用のプロジェクトの設定