Java コードをリモートでデバッグする

Notes クライアント JVM (Java 仮想マシン) の制御下で実行される Java コードをデバッグするには、JPDA (Java Platform Debugger Architecture) をサポートする Eclipse などのデバッガを使用します。JPDA の詳細については、java.sun.com/products/jpda を参照してください。Eclipse と Eclipse デバッガについては、www.eclipse.org を参照してください。Domino サーバー上で実行される Java コードはデバッグできません。

Java コードをデバッグするには、次の手順を実行してください。

  1. Notes クライアントで Java デバッグを有効化します。
  2. エージェント、Web サービス、スクリプトライブラリで Java デバッグを有効化します。
  3. デバッガを JVM に接続します。
注: Java エージェントのデバッグは Release 7 で新しく追加された機能です。
注意:
Java デバッグはセキュリティで保護されず、また、パフォーマンスを低下させます。必要時以外は、Java デバッグを無効化してください。

Notes クライアントで Java デバッグを有効化する

Notes クライアントでは、以下のコンテキストでの Java デバッグをサポートしています。それぞれのコンテキストで、独自の JVM が使用されます。各コンテキストでは、一度に 1 ユーザーのみがデバッグできます。

スクリプトライブラリの Java コードは、呼び出し元コードのコンテキストで実行されます。

Notes クライアントで Java デバッグを有効化および無効化するには:

  1. [ツール] - [Java デバッグプリファレンス] を選択します。[Java デバッグプリファレンス] ダイアログボックスが表示されます。
  2. フォアグラウンドデバッグを有効化するには、[クライアント エージェント/アプレット] を選択し、Notes コンピュータとデバッガコンピュータを接続するポート番号を指定します。無効化するには、選択を解除します。
  3. バックグラウンドデバッグを有効化するには、[ローカルでスケジュールしたエージェント] を選択し、Notes コンピュータとデバッガコンピュータを接続するポート番号を指定します。無効化するには、選択を解除します。
  4. Web プレビューデバッグを有効化するには、[Http プリビュー] を選択し、Notes コンピュータとデバッガコンピュータを接続するポート番号を指定します。無効化するには、選択を解除します。

空いていると思われるポート番号を選択します。これには、試行錯誤が必要となることがあります。

Java デバッグは、デフォルトでは無効化されています。

フォアグラウンドまたはバックグラウンドのプリファレンスを変更した場合は、Notes を再起動する必要があります。Web プレビューのプリファレンスを変更した場合は、プレビューを再起動する必要があります。

エージェント、Web サービス、スクリプトライブラリで Java デバッグを有効化する

Java デバッグを有効化するには、[エージェント] プロパティボックスまたは [Web サービス] プロパティボックスの [基本] タブに移動するか、[スクリプトライブラリ] プロパティボックスに移動し、以下をチェックします。

デバッグ情報を含めて Java をコンパイルする

Domino Designer の外部でデバッグする Java をコンパイルする場合は、コンパイル時に -g オプションを指定します。

エージェントまたは Web サービスを変更した場合はその後に、デバッガがアクセスできるファイルにソースコードを書き出してください。

デバッガを JVM に接続する

以下の手順は、Eclipse デバッガの使用を前提としています。他のデバッガを使用する場合は、手順を変更する必要があります。

  1. デバッグ対象のエージェントまたは Web サービスが含まれている Notes クライアントを、Java デバッグを有効化して起動します。
  2. デバッガを開始します。
  3. Java プロジェクトを作成し、Java パースペクティブに切り替えます。例えば、[ファイル] - [新規] - [プロジェクト] を選択し、[プロジェクト] ウィンドウで [Java] を選択します。次に、プロジェクトの名前を入力して [完了] を選択し、Java パースペクティブに切り替えます。または、プロジェクトがすでに存在する場合は、そのプロジェクトを開きます。
  4. ソース Java ファイルを呼び出します。例えば、左側のペインでプロジェクトフォルダを右クリックし、[呼び出し] を選択します。次に、ソースファイルを参照して選択し、それらを呼び出します。

    呼び出されなかったソースコードは、デバッグの対象となりません。実行スレッドは参照可能で、変数にもアクセスできますが、ソースコードを参照したり、ブレークポイントを設定したりすることはできません。

  5. Notes で、デバッグするエージェントまたは Web サービスを開始します。
  6. Eclipse で、デバッガを Notes JVM に接続します。例えば、[実行] - [デバッグ] を選択し、デバッグ設定の名前を入力します。次に [接続] タブを選択し、プロジェクトを選択し、Notes コンピュータのホスト名またはアドレスを入力し、Notes クライアントの Java デバッグポート番号を入力します。さらに、(初回または設定を変更した場合のみ) [適用] を選択し、[デバッグ] を選択します。Notes クライアントと Eclipse が同じコンピュータで実行される場合のホストアドレスは、127.0.0.1 です。

デバッガに接続すると、JVM の実行スレッドを参照できるようになります。エージェントのスレッドは、次のように表示されます。

Thread(AgentThread: JavaAgent)(Running)

エージェントのスレッドを一時停止して、スレッドを制御することができます。この時点で、通常のデバッガ機能が利用可能になります (ブレークポイントの設定、ステップ実行、続行、変数値の表示など)。

Java エージェントの実行時間は、デバッガを JVM に接続できるだけの長さであることが必要です。例えば、プロシージャー開始時に、sleep ステートメントでループを挿入する方法で、実行を遅らせることもできます。

Notes とデバッガが別々のコンピュータで実行される場合に、「Failed to connect to remote VM」というエラーが表示されたときは、おそらく指定したポートが別のプロセスで使用されています。別のポート番号を指定し、Notes を再起動してみてください。

セキュリティ上の考慮事項

ネットワークを介した Java デバッグは、セキュリティで保護されません。デバッグを行わないときは、Java デバッグを無効化した状態で Notes または Web プレビューを再起動してください。