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

このトピックでは、リモート・デバッグを実行するためにOracle Application Server Container for J2EE(OC4J)をリモート・デバッグ対象(デバッグするプログラム)として設定する方法について説明します。

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

ただし、次のいずれかの場合、これらすべての手順を実行する必要があります。

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

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

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

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

注意: OC4J 2.0のインストール時に、これらのファイルの一部がすでに適切な場所にインストールされている場合があります。この場合、これらをOC4Jのホームにコピーする必要はありません。

  1. <jdev_install>/libディレクトリで、xmlparserv2.jar<OC4J_HOME>/libにコピーします。
  2. <jdev_install>/jdev/libディレクトリで、ojc.jarおよびjdev-remote.jar<OC4J_HOME>/home/libにコピーします。

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

関連資料: Oracle Application Serverのドキュメント・ライブラリに用意されているOracleJSP Support for JavaServer Pages開発者ガイドおよびリファレンス

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

  1. <OC4J_HOME>\configディレクトリで、global-web-application.xmlをテキスト・エディタで開きます。
  2. 次のセクションを検索します。
     
        <orion-web-app
        jsp-cache-directory="./persistence"
        servlet-webdir="/servlet"
        development="false"
        >
    Change development="false" to development="true" to enable servlet debugging.
  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の環境に基づいて適切なコマンドを発行します。

    Windows NT上でOJVMを使用したOC4Jの場合
    java -ojvm -XXdebug,port4000,detached,quiet -jar oc4j.jar

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

    Windows NTおよびUNIX上でClassic VMを使用したOC4Jの場合
    java -classic -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000 -jar oc4j.jar
    Windows NTおよびUNIX上でHotSpot VMを使用したOC4Jの場合
    java -server -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000 -jar oc4j.jar

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

トラブルシューティング

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

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


リモート・デバッグについて
デバッグのためのプロジェクトの構成