Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerSAP 用 Anypoint Connector (SAP Connector) をトラブルシューティングするには、全般的なトラブルシューティングの実行、一般的な特定エラーへの対応、そして一般的にスローされる例外メッセージの解釈について理解しておく必要があります。
冗長例外ログを有効化して、デフォルトの切り捨てられた出力ではなくエラーの完全なスタック追跡を表示します。
Studio で、プロジェクトを右クリックし、[Run (実行)] > [Run Configurations (実行設定)] を選択します。
[Arguments (引数)] タブに移動して、[VM arguments (VM 引数)] セクションで引数を付加して mule.verbose.exceptions
プロパティを追加します。次に例を示します。
-XX:PermSize=128M -XX:MaxPermSize=256M -Dmule.verbose.exceptions=true
アプリケーションと SAP Connector のやりとりが失敗する理由の理解を深めるには、コネクタの冗長ログを一時的に有効にします。
Mule アプリケーションのパフォーマンスに影響する可能性があるため、トラブルシューティングが完了したら、必ず拡張された冗長性を無効にしてください。
設定ファイルで冗長ログを有効にする手順は、次のとおりです。
Anypoint Studio にアクセスし、[Package Explorer] ビューに移動します。
アプリケーションのプロジェクト名を開きます。
src/main/resources
フォルダーを開きます。
フォルダー内の log4j2.xml
ファイルを開きます。
<Loggers>
タグ内に <AsyncLogger>
タグを追加します。
<Loggers>
...
<AsyncLogger name="com.mulesoft.connectors.sap" level="DEBUG"/>
...
</Loggers>
xml
アプリケーションの変更を保存します。
Package Explorer でプロジェクト名をクリックし、[Run (実行)] > [Run As (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)] をクリックします。
SAP Connector の全般的なトラブルシューティングガイドラインは次のとおりです。
Mule では (アプリケーションごとに) ログファイルが $MULE_HOME\logs
ディレクトリに保存されます。
mule.log
デフォルトの Mule ログファイル
mule-app-YOUR_APP_NAME.log
アプリケーションごとのログファイル
JCo トレースは Mule の外部から有効にできます。JCo トレースは次の Java 起動環境プロパティを受け入れます。
-Djco.trace_level=N
N
は 0
~ 10
で、10
は最も詳細なトレース
-Djco.trace_path=<PATH>
省略可能
JCo は 0
(デフォルト) ~ 10
のトレースレベルをサポートします。 トレースレベルが高いほど、トレースデータの量が増加します。各トレースレベルには、下位のトレースレベルのすべてのトレースデータも含まれます。多くの JCo コールと転送されるコンテンツで高い JCo トレースレベルを使用する場合は、十分なディスク容量が使用可能であることを確認してください。
コネクタレベルでトレースを有効にする手順は、次のとおりです。
属性 jcoTrace
を true
に設定するか、値 1
の拡張 JCo プロパティ jco.client.trace
または jco.server.trace
を指定します。
Mule の起動時に -Djco.trace_level=N
の値を指定します。
トレースレベル | AS Java セキュリティレベル | JCo 3 トレースコンテンツ |
---|---|---|
|
|
トレースなし |
|
|
JCo バージョンとランタイム環境情報、およびアプリケーションエラーを含まない JCo 内部エラーと例外 |
|
|
JCo 警告メッセージ (ABAP 以外のシステム例外など) |
|
|
JCo 情報メッセージ (ABAP 例外など) |
|
|
RFC コールおよび重要な公開 API コール |
|
|
重要な内部ミドルウェアコール |
|
|
接続属性 |
|
|
RFC メタデータ (名前、型、オフセット、長さ、インポートおよびエクスポートオプション、およびコンテンツデータのその他の 16 進数値を含む) |
|
|
完全なコンテンツデータダンプ (文字または行の制限なし) |
|
|
追加情報なし (将来の使用のために予約済み) |
|
|
追加情報なし (将来の使用のために予約済み) |
必要に応じて、-Djco.trace_path=<PATH>
の値を指定します。通常、これは、トレースファイルが保存されている既存のディレクトリへの完全パスですが、他の特別な値を適用できます。
stdout
JCo トレース情報は標準出力ストリームに送信されます。
stderr
JCo トレース情報は標準エラーストリームに送信されます。
-Djco.trace_path
を設定しない場合、トレースファイルは作業ディレクトリに保存されます。Mule スタンドアロンインスタンスの場合、通常は $MULE_HOME/bin
フォルダーになります。
SAP Connector の一般的なエラーとその解決方法のリストを次に示します。
通常、1 つ以上の必須の SAP JCo 連動関係を読み込まずに接続のテストや Mule アプリケーションのデプロイを実行した場合にこのエラーが発生します。
JCo ネイティブライブラリの欠落
java.lang.ExceptionInInitializerError: JCo initialization failed with java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path
text
JCo JAR の欠落
java.lang.NoClassDefFoundError: com/sap/conn/jco/JCoTraceListener
IDoc JAR の欠落
java.lang.NoClassDefFoundError: com/sap/conn/idoc/IDocMetaDataUnavailableException
このエラーを解決する手順は、次のとおりです。
[Required Libraries (必須ライブラリ)] セクションで、赤い感嘆符アイコンが付いている連動関係の横にある [Configure (設定)] をクリックします。
連動関係を参照し、適切なファイルを選択します。
欠落している連動関係がプロジェクトのクラスパスに自動的に追加されます。
Package Explorer で、プロジェクトを右クリックし、[Build Path (ビルドパス)] > [Configure Build Path (ビルドパスを設定)] に移動すると、プロジェクトのビルドパス内のライブラリが表示されます。 |
ネイティブライブラリをグローバル設定から読み込むと、ファイルのコピーが $YOUR_APP/src/main/app/lib
内に配置されますが、ソースファイルは削除されません。そのため、接続のテストやアプリケーションのデプロイを実行するときに、ネイティブライブラリが JCo JAR ファイルと同じディレクトリを共有していると、次のエラーが発生します。
java.lang.ExceptionInInitializerError: JCo initialization failed with java.lang.UnsatisfiedLinkError: Native Library /home/mule/sap-errors/lib/jco/libsapjco3.so already loaded in another classloader
text
このエラーを解決する手順は、次のとおりです。
次のいずれかの解決策を選択します。最初の解決策は最も簡単ですが、2 番目の解決策をベストプラクティスとしてお勧めします。
JCo JAR ファイルが存在するディレクトリから重複するネイティブライブラリファイルを削除します。
ダイナミックリンクライブラリを保持するように環境変数 LD_LIBRARY_PATH
を設定し、同じ Mule Runtime サーバー内にデプロイされている複数のアプリケーションでその環境変数を共有します。
次のエラーの最も多い原因は、異なるバージョンのネイティブライブラリと JCo JAR ファイルが使用されていることです。
java.lang.ExceptionInInitializerError: Native library sapjco3 is too old. Found library System-defined path to libsapjco3.so has version "720.612", but required is at least version "720.713".
text
このエラーを解決するには、次の要件が満たされていることを確認します。
64 ビットモードで動作する JVM では 64 ビット JCo が必要で、32 ビットモードで動作する JVM では 32 ビット JCo が必要です。
Microsoft Windows では、JCo には Microsoft Visual Studio 2005 C/C++ ランタイムライブラリが必要です。
sapjco.jar
と、sapjco3.dll
、sapjco3.so
、および sapjco3.jnilib
のいずれかの両方が同じ JCo パッケージから取得されている必要があります。
使用している JCo ライブラリのバージョンを確認するには、次のいずれかを実行します。
Windows (UI):
sapjco3.jar
ファイルが配置されているディレクトリに移動します。
sapjco3.jar
ファイルを右クリックします。
コンテキストメニューから [プログラムから開く] を選択します。
[Java 2 Platform Standard Edition] バイナリをクリックします。
表示された JCo ダイアログに表示されている情報を確認します。
Mac:
ターミナルウィンドウを開きます。
sapjco3.jar
ファイルが配置されているディレクトリに移動します。
コマンド java -jar sapjco3.jar -version
を実行します。
表示された JCo ダイアログに表示されている情報を確認します。
JCo 3.0.11 以降では、SAP JCo ライブラリファイルは JCo により認識されないため、名前変更できず、次のエラーが表示されます。
java.lang.ExceptionInInitializerError: Illegal JCo archive "sapjco3-3.0.11.jar". It is not allowed to rename or repackage the original archive "sapjco3.jar"
text
このエラーを解決する手順は、次のとおりです。
Apache Maven を使用している場合は、属性 <stripVersion>true</stripVersion>
を持つ maven-dependency-plugin を設定します。これを設定し、JCo アーティファクトを削除すると、すべての連動関係ライブラリのバージョン番号が削除されます。
詳細は、 「Apache Maven Dependency Plugin (Apache Maven Dependency プラグイン)」を参照してください。
エンドポイントは、BAPI または IDoc を実行するために必要な入力パラメーターを含む SAP オブジェクトを想定します。
以下のメッセージが表示された場合、次のいずれかが考えられます。
必要な入力パラメーターが指定されていない。
入力パラメーターは指定されているが、SAP オブジェクトが無効である。
org.mule.api.transport.DispatchException: Message is not a SAP object, it is of type "byte[]". Check the transformer for this Connector "SapConnector". Failed to route event via endpoint: SapOutboundEndpoint{endpointUri=sap://function, connector=SapConnector { name=SapConnector lifecycle=start this=4571cebe numberOfConcurrentTransactedReceivers=4 createMultipleTransactedReceivers=true connected=true supportedProtocols=[sap] serviceOverrides=<none> } , name='endpoint.sap.function', mep=ONE_WAY, properties={evaluateFunctionResponse=false, bapiTransaction=false, functionName=BAPI_MATERIAL_AVAILABILITY, rfcType=srfc, outputXml=true}, transactionConfig=Transaction{factory=null, action=INDIFFERENT, timeout=0}, deleteUnacceptedMessages=false, initialState=started, responseTimeout=10000, endpointEncoding=UTF-8, disableTransportTransformer=false}. Message payload is of type: byte[]
text
このエラーを解決する手順は、次のとおりです。
次の 2 つのいずれかの操作を実行して、BAPI または IDoc へのコールを表す SAP オブジェクトを作成します。
BAPI コールを含む SAP オブジェクトが含まれる XML を作成します。
実際の SAP コールを作成するための入力が含まれる XML 定義を指定します。
次のエラーが発生した場合、RFC 宛先が Unicode をサポートしていないことを意味します。
RfcException: [mc-vmware|a_rfc] message: (3) IDOC_ERROR_METADATA_UNAVAILABLE: The meta data for the IDoc type "??????????????????????????å å" with extension " ORDSAPB6L B60CL ???" is unavailable. Return code: RFC_FAILURE(1) error group: 104 key: RFC_ERROR_SYSTEM_FAILURE
text
このエラーを解決する手順は、次のとおりです。
トランザクション SM59 を使用して、SAP インスタンスでの Unicode サポートを設定します。
TID ハンドラーが定義されていないため、次のエラーが表示されます。
RfcException: [mule.local|MULESOFT_IDOC_SEND_TEST] message: check TID fault: No transaction handler is installed. Unable to process tRFC/qRFC requests. Return code: RFC_FAILURE(1) error group: 104 key: RFC_ERROR_SYSTEM_FAILURE Exception raised by myhost.com.ar|MULESOFT_IDOC_SEND_TEST at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.playbackTRfc(MiddlewareJavaRfc.java:2625) at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.handletRfcRequest(MiddlewareJavaRfc.java:2546) at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.listen(MiddlewareJavaRfc.java:2367) at com.sap.conn.jco.rt.DefaultServerWorker.dispatch(DefaultServerWorker.java:284) at com.sap.conn.jco.rt.DefaultServerWorker.loop(DefaultServerWorker.java:369) at com.sap.conn.jco.rt.DefaultServerWorker.run(DefaultServerWorker.java:245) at java.lang.Thread.run(Thread.java:680)
text
このエラーを解決する手順は、次のとおりです。
<sap:inbound-endpoint />
で rfcType
を trfc
または qrfc
に設定します。
SAP 拡張プロパティには有効な名前が必要です。このため、無効なプロパティ名を指定すると、次のようなエラーメッセージが表示されます。
Root Exception stack trace: RfcException: [null] message: Parameter 'type' not supported: 'f' Return code: RFC_INVALID_PARAMETER(19) error group: 101 key: RFC_ERROR_PROGRAM at com.sap.conn.rfc.api.RfcOptions.checkParameters(RfcOptions.java:182) at com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcClient.connect(MiddlewareJavaRfc.java:1328) at com.sap.conn.jco.rt.ClientConnection.connect(ClientConnection.java:731) + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
text
この例では、type
という名前のパラメーターが無効であることが JCo ライブラリにより報告されています。
このエラーを解決する手順は、次のとおりです。
JCo 拡張プロパティの有効なプロパティ名を指定します。
2 つ以上の JCo サーバーには、設定名が異なっていても同じ設定パラメーターセットを含めることはできないため、次のエラーが表示されます。
ERROR 2012-07-05 10:11:30,525 [WrapperListener_start_runner] com.mulesoft.mule.transport.sap.SapMessageReceiver: Error connecting to server com.sap.conn.jco.JCoException: (101) JCO_ERROR_CONFIGURATION: Server configuration for sapavalara-1.0-SNAPSHOT-gettax is already used for a running server at com.sap.conn.jco.rt.StandaloneServerFactory.update(StandaloneServerFactory.java:358) at com.sap.conn.jco.rt.StandaloneServerFactory.getServerInstance(StandaloneServerFactory.java:176) at com.sap.conn.jco.server.JCoServerFactory.getServer(JCoServerFactory.java:74) at com.mulesoft.mule.transport.sap.jco3.SapJcoRfcServer.initialise(SapJcoRfcServer.java:46) at com.mulesoft.mule.transport.sap.jco3.SapJcoServerFactory.create(SapJcoServerFactory.java:60) at com.mulesoft.mule.transport.sap.SapMessageReceiver.doConnect(SapMessageReceiver.java:56) at org.mule.transport.AbstractTransportMessageHandler.connect(AbstractTransportMessageHandler.java:218) at org.mule.transport.AbstractConnector.registerListener(AbstractConnector.java:1254)
text
これは、同じ Mule サーバーで実行されている Mule アプリケーションにのみ適用されます。Mule サーバーグループのノードにこの制限はありません。 |
このエラーを解決する手順は、次のとおりです。
次の属性を使用して、サーバーグループキーを作成します (サーバーグループキーは JCo サーバー接続のユニーク性を決定します)。
jco.server.gwhost
jco.server.gwserv
jco.server.progid
2 つのサーバーで gwhost
、gwserv
、および progid
の値が異なる場合のみ、2 つのサーバーを同じ Mule インスタンスで開始できます (JCo はこの情報をシングルトンクラスで保持します)。
スローされる一般的な例外メッセージとその解釈方法のリストを次に示します。
SAP:CONNECTIVITY
A connection cannot be established. (接続を確立できません。)
SAP:INVALID_CACHE
The cache used internally by the JCo library is corrupted or can’t be read. (JCo ライブラリで内部的に使用されているキャッシュが破損しているか、読み取ることができません。)
SAP:INVALID_INPUT
User input cannot be parsed or is incorrect. (ユーザー入力を解析できないか、ユーザー入力が正しくありません。)
SAP:METADATA_UNAVAILABLE
The metadata for an IDoc segment is unavailable. (IDoc セグメントのメタデータを利用できません。)
SAP:NOT_FOUND
A function or IDoc template cannot be found or retrieved. (関数または IDoc テンプレートが見つからないか、取得できません。)
SAP:NOT_SUPPORTED
An action occurs that is not supported by any JCo handler. (JCo ハンドラーでサポートされていないアクションが実行されました。)
SAP:PARSING
The JCo library has a parsing issue or the connector cannot convert XML to a BAPI function or an IDoc. (JCo ライブラリに解析の問題があるか、コネクタが XML を BAPI 関数または IDoc に変換できません。)
SAP:RETRY_EXHAUSTED
Execution block retries are exhausted. (実行ブロックの再試行が終了しました。)
SAP:SYSTEM_BUSY
The remote ABAP system is too busy to handle a request. (リモートの ABAP システムが混雑しているため要求を処理できません。)
SAP:TIMEOUT
A timeout exception happens inside the JCo library. (JCo ライブラリ内でタイムアウト例外が発生しました。)