D 一般的な問題の診断

この付録では、Oracle B2Bの一般的な問題を診断およびトラブルシューティングする方法について説明します。

一般的な診断

Oracle B2Bを使用したメッセージの送受信でエラーが発生した場合は、次の方法でエラーの根本的な原因を診断できます。

Oracle B2Bコンソールでのエラーの識別

Oracle B2Bを使用してエラーの詳細を調べ、エラーのタイプを識別することが、問題を診断する際の最初のステップです。

エラー・タイプの識別

エラーには次のタイプがあります。

  • 接続エラー

  • ドキュメント識別エラー

  • ドキュメント検証エラー

  • アグリーメント識別エラー

表D-1は、一般的なエラー・タイプを示しています。

表D-1 エラー・タイプ

エラー・タイプ エラー・メッセージ 考えられる原因

接続

トランスポート・エラー: [IPT_HttpSendConnectionRefused

アウトバウンドの場合:

デリバリ・チャネル: 取引パートナが起動していない、または取引パートナのURLが正しくない

ドキュメント識別

ドキュメント・プロトコル識別エラー

インバウンドの場合(プロトコルによる):

  • XPath、位置指定ファイル、ドキュメント・タイプまたはファイル名が正しくない

アウトバウンドの場合:

  • B2Bパラメータが正しく設定されていない

  • 不適切なXML: 内部プロパティ

ドキュメント検証

一般的な検証エラー

ドキュメント・プロトコルに依存します。

アグリーメント識別

指定された入力値に対する取引パートナ・アグリーメントが見つかりません

インバウンドまたはアウトバウンドの場合:

  • パートナとドキュメントの組合せに対するアグリーメントが見つからない

  • アグリーメント内の方向が正しくない

エラーの場所の識別

エラー・タイプを識別した後、エラーの場所を見つける必要があります。

エラーは次のレベルで発生する可能性があります。

  • 取引パートナ: メッセージを送信したが、取引パートナからの確認を受信しなかった場合、パートナ側に何か問題がある可能性があります。

  • B2B: Oracle B2Bエンドでは、管理番号の問題(管理番号の重複)、検証の問題または識別の問題が発生する可能性があります。識別には、ドキュメントの識別とアグリーメントの識別があります。

  • コンポジット: コンポジット・エンドでは、正しくないコンポジットによってメッセージが受信されるというルーティング問題が発生する可能性があります。さらに、検証の問題、XSLTの問題、またはエンドポイントの停止によるアプリケーションとの通信失敗もあります。

  • アプリケーション: アプリケーション・レベルでは、正しくないドキュメントや認証による問題、またはアプリケーション内でのデータ検証エラーが発生する可能性があります。

メッセージ・フローのチェック

メッセージ・フローをチェックし、エラー・レポートを表示して、エラーの詳細を把握することもできます。メッセージ・フローは次のとおりです。

  • 取引パートナからの場合

    「ワイヤ」→「ビジネス」→「アプリケーション」

  • Middlewareからの場合

    「アプリケーション」→「ビジネス」→「ワイヤ」

診断のサンプル

2つの取引パートナ間のアグリーメントが見つからず、エラーとなる状況を考えます。

この場合、次のようなチェックを実行します。

  • 識別の順序のチェック

    • パートナ: 最初に、メッセージが交換されるパートナを識別します

    • ドキュメント: メッセージのドキュメント・タイプおよびドキュメント・リビジョンを識別します

    • アグリーメント: パートナおよび交換されるドキュメントに基づいてアグリーメントを識別します

    • ドキュメント検証: ドキュメントがアグリーメントに対して有効かどうかをチェックします

  • 取引パートナ側からのチェック

    • 識別子をチェックします。Oracle B2Bでは、識別子タイプを使用して取引パートナを実行時に識別します。通常の識別プロセスでは、パートナ、ドキュメントの順に識別し、そのパートナ/ドキュメント・ペアによってアグリーメントを識別します。Oracle B2Bでは、各取引パートナに、デフォルトの識別子タイプである「名前」が指定されます。その値は取引パートナの名前です。

    • 適切なドキュメント識別メソッドが使用されているかどうかをチェックします。

  • Middleware側からのチェック

    • アグリーメントに関連する正しいB2BパラメータがOracle Fusion Middleware Enterprise Manager Controlコンソールで設定されているかどうかをチェックします。

Fusion Middleware Enterprise Manager Controlコンソールでのログ・ファイルとコンポジットの確認

Oracle B2Bコンソールとは別に、Oracle Fusion Middleware Enterprise Manager Controlコンソールを使用して、メッセージ交換に関する問題を診断できます。

ノート:

作成されるすべてのエラーは、デフォルトでB2B例外キューに入れられます。そのキューはモニタリングすることもできます。エラー・キューを中心とするエラー処理フレームワークがある場合、発生したエラーをコンソールでチェックしなくても、エラー通知を受信できます。これは例外処理に関する項で扱われており、そこでも示すことができます。詳細は、 「例外処理」「エラー・メッセージ配信でのカスタム例外キューの使用」およびその他の項を参照してください。

Oracle B2Bの診断ログを表示するには、Enterprise Manager Controlコンソールを使用してログ・レベルを設定する必要があります。

Oracle Fusion Middleware Oracle SOA SuiteおよびOracle BPM Suiteの管理Oracle B2Bロギング・モードの構成に関する項を参照してください。

ノート:

ログ・ファイル、およびログ・ファイルに書き込むロギング情報のレベルとタイプの詳細は、『Oracle Fusion Middleware管理者ガイド』を参照してください。

Oracle B2B関連のログ・ファイルを表示するには:

  1. Oracle Fusion Middleware Enterprise Manager Controlコンソールを開きます。

  2. 「SOA」「<SOAドメイン名>」に移動します。

  3. 「<SOAドメイン名>」を右クリックし、「ログ」「ログ・メッセージの表示」を選択します。

  4. 右側の「ターゲット・ログ・ファイル」をクリックします。

  5. 「<Managed_Server name>-diagnostic.log」を選択し、「ログ・ファイルの表示」をクリックします。

デプロイ済コンポジットをチェックして、発生した可能性があるエラーについてフローのトレースを実行することもできます。

コンポジットをチェックしてフローのトレースを実行するには:

  1. Oracle Fusion Middleware Enterprise Manager Controlコンソールを開きます。
  2. 「SOA」「<SOAドメイン名>」で、デプロイ済コンポジットに移動します。
  3. 「フロー・インスタンス」タブをクリックし、インスタンスを検索します。
  4. 関連するフローIDのリンクをクリックし、フロー・トレースを表示します。

ログ・ファイルの実際のスレッドIDの表示

スレッドIDを使用して、診断ログの隠すレッドの実行を追跡できます。これらを使用して、各トレース行をスレッドIDと関連付けることができます。デフォルトでは、ログ・ファイルにはスレッド名が格納されます。スレッド名には、Workmanagerなどの一般名を付けることができます。

logging.xmlファイルのハンドラの構成を変更することにより、ログ・ファイルの実際のスレッドIDを表示できます。ODLHandlerプロパティuseThreadNameおよびuseRealThreadIdを使用して、スレッド名またはIDのロギングを制御します。useThreadNameをfalseに設定すると、スレッド名のロギングが停止します。useRealThreadIdをtrueに設定すると、実際のスレッドIDがログに追加されます。

これは、一般的な構成です。
<log_handler name='odl-handler'
class='oracle.core.ojdl.logging.ODLHandlerFactory'>
     <property name="path" value="..."/>
     ....
     <property name="useThreadName" value="false"/>
     <property name="useRealThreadId" value="true"/>
</log_handler>
これは、構成の例です。
$Domain/config/fmwconfig/servers/soa_server1/logging.xml
   <property name='useThreadName' value='false'/>
   <property name='useRealThreadId' value='true'/>
使用するバージョンによって、logging.xmlファイルの場所が多少異なる可能性があります。
  • 12.1.3の場合: oracle_common/modules/oracle.odl_12.1.3/server_config/logging.xml

  • 12.2.1の場合: oracle_common/modules/oracle.odl/server_config/logging.xml