このセクションでは、SAP JCo ライブラリを使用して SAP システムと通信する Java アプリケーションのビジネストランザクション相関を有効にする方法について説明します。

On this page:

SAP JCo を使用することにより、Java アプリケーションは SAP ABAP システムで RFC 対応の関数モジュールを呼び出すことができます。

  • サポートされる JCo バージョン:SAPJCo2、SAPJco3
  • サポートされる SAP Java リソースアダプタ(JRA)
  • Java エージェントの最小バージョン:4.3.8.x
  • Java エージェントバージョン 4.5.5 〜 4.5.8 との互換性に関する既知の問題、4.5.9 で修正済み
  • Java エージェントバージョン 4.5.18 以降との互換性に関する既知の問題、JCo 拡張 20.5.0 以降で修正済み

JCo インストゥルメンテーション アーキテクチャ

現在のバージョンでは、JCo RFC コールのインストゥルメンテーションは Java エージェント拡張(SDK プラグイン)によって行われます。

次の図は、JCo インストゥルメンテーションのアーキテクチャの概要を示しています。

  • Java アプリケーションは、SAP JCo ライブラリを使用して SAP NetWeaver システムの RFC 対応関数モジュールを呼び出します。
  • Java エージェントは、JCo 拡張を使用して RFC exit コールを代行受信します。
  • JCo 拡張は、ビジネストランザクションの続行を開始および停止できる相関情報を ABAP エージェントに送信します。

Java エージェントと JCo 拡張のインストール

Java エージェントのインストールの一般的な手順を使用し、次の手順に進み、Java から SAP システムへの RFC コールを確認します。

  1. Javaエージェントのインストール」に記載されている標準のインストール手順に従って、SAP コンポーネント内に Java エージェントをインストールします。
  2. 次の ABAP エージェント zip ファイルを解凍します。APPD-SAP-<version>.zip.
  3. APPD-SAP-<version>/AppServerAgent-JCo-plugin-<version>/ ディレクトリの内容を [JavaAgentPath]/ver4.3.x.x/sdk-plugins/ ディレクトリにコピーします。
  4. allow.unsigned.sdk.extension.jars=true パラメータを使用して、Java 起動スクリプトで署名なしの拡張を有効にします。

SAP アプリケーションサーバーを使用している場合は、次のツールを使用して Java エージェントをランタイムに追加することもできます。

  1. SAP NetWeaver Administrator
  2. AS Java Config Tool

Configuring AppDynamics Java Agent using SAP NetWeaver Administrator

  1. SAP NetWeaver Application Server Java Web ポータルを開きます。
  2. [SAP NetWeaver Administrator >> Configuration >> Infrastructure >> Java System Properties >> Additional VM Parameters] をクリックします。
    1. 署名なしの SDK 拡張の VM パラメータ  -Dallow.unsigned.sdk.extension.jars=true を追加します。
    2. VM パラメータ -Dappdynamics.bciengine.should.implement.new.interfaces=false を追加します。
    3. Java エージェントの VM パラメータ javaagent:<agent_home>/javaagent.jar を追加します。
    4.  Save をクリックします。 
  3. SAP サーバーを再起動します。

Configuring AppDynamics Java Agent using AS Java Config Tool

  1. SAP NetWeaver Application Server Java Web ポータルを開きます。
  2. AS Java Config Tool でインスタンスを選択し、[VM Parameters >> Additional] をクリックします。 
    1. 署名なしの SDK 拡張の VM パラメータ  -Dallow.unsigned.sdk.extension.jars=true を追加します。
    2. VM パラメータ -Dappdynamics.bciengine.should.implement.new.interfaces=false を追加します。
    3. Java エージェントの VM パラメータ javaagent:<agent_home>/javaagent.jar を追加します。
    4.  File, Apply Changes をクリックします。 
  3. SAP サーバーを再起動します。

デバッグモードでのロギング

  1. コントローラに接続し、[Tiers & Nodes] に移動します。 
  2. デバッグモードを有効にする必要がある目的の Java ノードを選択します。 
  3. [Agents] を選択し、[Request Agent Log File] をクリックします。 
  4. [Output from Specific logger, at a set level, for a fixed duration] を選択します。
    1. [Logger Name]:com.singularity
    2. [Logger Level]:Debug
    3. [Duration (minutes)]:10 以上

  5. [Request Agent Log Files] をクリックします。
  6. ステータスが成功になったら、[Download] をクリックします。

推奨

デバッグモードを開始し、サポートチケットにログを添付します。

オーソリゼーション

次の SAP ユーザーに承認権限 /DVD/APPD_JAVA を割り当てる必要があります。

  • Java から RFC を呼び出す SAP ユーザー
  • RFC 宛先で使用される SAP ユーザー

詳細については、AppDynamics の承認参照してください。

JCo Server でのビジネストランザクションの開始

JCo Server コール中にビジネストランザクションを開始するには、次の Java エージェント POJO ルールを設定します。

JCo2JCo3

Match Classes
that extends a Super Class that
Equals com.sap.mw.jco.JCO$Server
Method name
Equals handleRequest

Match Classes
that implements an Interface which
Equals com.sap.conn.jco.server.JCoServerFunctionHandler
Method name

Equals handleRequest

JCo Server でのビジネストランザクションの続行

JCo Server でアップストリーム ビジネス トランザクションから続行できるようにするには、JCo Server を呼び出すシステムで ABAP コードを変更する必要があります。「カスタム ABAP コードのインストゥルメント化」を参照してください。 

これが正しく機能するためには、JCo プラグインバージョン 4.5.2002 以降の最初のインストール後に Java システムを再起動する必要があります。

SAP PI / PO(7.4)AS Java

次の表に、サポートされている SAP PI / PO 7.4 のJava チャネルを示します。

PI/PO アダプタのタイプ方向(Direction)
RFC

双方向

インバウンド相関については、「カスタム ABAP コードのインストゥルメント化を参照してください。

HTTP(HTTP_AAE)双方向
SOAP双方向

SAP NetWeaver Java コアロジックの変更により、一部の機能はリリース 753、パッチレベル 925 以降で使用できなくなりました。

この制限は、バージョン 22.8.0 で解決されています。

Web サービス(WS_AAE)双方向

SAP NetWeaver Java コアロジックの変更により、一部の機能はリリース 753、パッチレベル 925 以降で使用できなくなりました。

この制限は、バージョン 22.8.0 で解決されています。

ファイル(File)インバウンド(ファイルから PI、相関なし、BT エントリポイントのみ)

次のカスタム POJO ルールで BT を開始します。

Match Classes
with a class Name that
Equals com.sap.aii.adapter.file.File2XI
Method name
Equals <invoke または send>

JMS双方向

発信 SAP PI exit コールを表示するには、 Java エージェント自動検出または POJO ルールを使用して.、SAP PI 着信チャネルで BT を開始または続行する必要があります。

RFC ブラックリストとホワイトリスト

RFC ブラックリストおよび RFC ホワイトリスト機能を使用すると、Java エージェントから ABAP エージェントへの RFC exit コールを除外または含めることができます。ブラックリストまたはホワイトリストを使用するには、SAP_JCO_iSDK.jar と同じディレクトリに jco-rules.xml ファイルを追加します。

RFC ブラックリスト

追加の RFC コールが実行されない関数モジュール(FM)を指定します。つまり、Java エージェントからのビジネストランザクションは、ダウンストリームの ABAP エージェントでは続行されません(上位 5 つの ABAP または SQL ステートメントなどはありません)。

FM をブラックリストに追加するには、<exclude type="fm">FUNCTION_MODULE</exclude> を jco-rules.xml ファイルに追加します(FUNCTION_MODULE は実際の関数モジュール名またはパターンに置き換えます)。

ブラックリストが空の場合、FM は除外されません。

また、以下を追加(変更)すると、ステートレスコールの相関をグローバルに無効にできます。

<exclude type="stateless">true</exclude>

RFC ホワイトリスト

追加の RFC コールが実行される関数モジュール(FM)を指定します。つまり、Java エージェントからのビジネストランザクションは、ダウンストリームの ABAP エージェントで(通常どおり)続行されます。

FM をホワイトリストに追加するには、<include type="fm">FUNCTION_MODULE</include> を jco-rules.xml ファイルに追加します(FUNCTION_MODULE は実際の関数モジュール名またはパターンに置き換えます)。

ホワイトリストが空の場合、すべての FM が含まれます。ホワイトリストに FM のリストが含まれている場合、リストされている FM のみが含まれます。

関数モジュール名がホワイトリストとブラックリストの両方にある場合、ブラックリストルールの優先順位が高くなり、FM はブラックリストに登録されます。

type="stateless" の exclude 要素が複数存在しないことを確認してください。