D 一般的な問題の診断
この付録では、Oracle B2Bの一般的な問題を診断およびトラブルシューティングする方法について説明します。
この章の内容は次のとおりです。
D.1 一般的な診断
Oracle B2Bを使用したメッセージの送受信でエラーが発生した場合は、次の方法でエラーの根本的な原因を診断できます。
D.1.1 Oracle B2Bコンソールでのエラーの識別
Oracle B2Bを使用してエラーの詳細を調べ、エラーのタイプを識別することが、問題を診断する際の最初のステップです。
D.1.1.1 エラー・タイプの識別
エラーには次のタイプがあります。
-
接続エラー
-
ドキュメント識別エラー
-
ドキュメント検証エラー
-
アグリーメント識別エラー
表D-1は、一般的なエラー・タイプを示しています。
表D-1 エラー・タイプ
エラー・タイプ | エラー・メッセージ | 考えられる原因 |
---|---|---|
接続 |
|
アウトバウンドの場合: デリバリ・チャネル: 取引パートナが起動していない、または取引パートナのURLが正しくない |
ドキュメント識別 |
|
インバウンドの場合(プロトコルによる):
アウトバウンドの場合:
|
ドキュメント検証 |
|
インバウンドの場合(EDI、HIPAA、HL7):
アウトバウンドの場合(EDI、HIPAA、HL7):
|
アグリーメント識別 |
|
インバウンドまたはアウトバウンドの場合:
|
D.1.1.2 エラーの場所の識別
エラー・タイプを識別した後、エラーの場所を見つける必要があります。
エラーは次のレベルで発生する可能性があります。
-
取引パートナ: メッセージを送信したが、取引パートナからの確認を受信しなかった場合、パートナ側に何か問題がある可能性があります。
-
B2B: Oracle B2Bエンドでは、管理番号の問題(管理番号の重複)、検証の問題または識別の問題が発生する可能性があります。識別には、ドキュメントの識別とアグリーメントの識別があります。
-
コンポジット: コンポジット・エンドでは、正しくないコンポジットによってメッセージが受信されるというルーティング問題が発生する可能性があります。さらに、検証の問題、XSLTの問題、またはエンドポイントの停止によるアプリケーションとの通信失敗もあります。
-
アプリケーション: アプリケーション・レベルでは、正しくないドキュメントや認証による問題、またはアプリケーション内でのデータ検証エラーが発生する可能性があります。
D.1.1.3 メッセージ・フローのチェック
メッセージ・フローをチェックし、エラー・レポートを表示して、エラーの詳細を把握することもできます。メッセージ・フローは次のとおりです。
-
取引パートナからの場合
「ワイヤ」→「ビジネス」→「アプリケーション」
-
Middlewareからの場合
「アプリケーション」→「ビジネス」→「ワイヤ」
D.1.1.4 診断のサンプル
2つの取引パートナ間のアグリーメントが見つからず、エラーとなる状況を考えます。
この場合、次のようなチェックを実行します。
-
識別の順序のチェック
-
パートナ: 最初に、メッセージが交換されるパートナを識別します
-
ドキュメント: メッセージのドキュメント・タイプおよびドキュメント・リビジョンを識別します
-
アグリーメント: パートナおよび交換されるドキュメントに基づいてアグリーメントを識別します
-
ドキュメント検証: ドキュメントがアグリーメントに対して有効かどうかをチェックします
-
-
取引パートナ側からのチェック
-
識別子をチェックします。Oracle B2Bでは、識別子タイプを使用して取引パートナを実行時に識別します。通常の識別プロセスでは、パートナ、ドキュメントの順に識別し、そのパートナ/ドキュメント・ペアによってアグリーメントを識別します。Oracle B2Bでは、各取引パートナに、デフォルトの識別子タイプである「名前」が指定されます。その値は取引パートナの名前です。
-
適切なドキュメント識別メソッドが使用されているかどうかをチェックします。
-
-
Middleware側からのチェック
-
アグリーメントに関連する正しいB2BパラメータがOracle Fusion Middleware Enterprise Manager Controlコンソールで設定されているかどうかをチェックします。
-
トランスレータXMLのパラメータが正しく設定されているかどうかをチェックします。
Oracle B2Bによる変換が必要なすべてのメッセージには、次のパラメータが必要です。
-
標準(例: X12)
-
バージョン(例: 4010)
-
GUID (例: {12345678-1234-1234-1234-123456789012})
-
-
トランスレータXMLの内部プロパティが正しく設定されているかどうかをチェックします。
ドキュメント・エディタによって生成されるXMLスキーマには、Oracle B2Bのデフォルトをオーバーライドできる内部プロパティが含まれます。これらを使用して、アウトバウンド・トランザクション・セットのエンベロープが生成されます。インバウンド方向では、この構造によって処理の追加情報が提供されます。
-
D.1.2 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関連のログ・ファイルを表示するには:
-
Oracle Fusion Middleware Enterprise Manager Controlコンソールを開きます。
-
「SOA」→「<SOAドメイン名>」に移動します。
-
「<SOAドメイン名>」を右クリックし、「ログ」→「ログ・メッセージの表示」を選択します。
-
右側の「ターゲット・ログ・ファイル」をクリックします。
-
「<Managed_Server name>-diagnostic.log」を選択し、「ログ・ファイルの表示」をクリックします。
デプロイ済コンポジットをチェックして、発生した可能性があるエラーについてフローのトレースを実行することもできます。
コンポジットをチェックしてフローのトレースを実行するには:
- Oracle Fusion Middleware Enterprise Manager Controlコンソールを開きます。
- 「SOA」→「<SOAドメイン名>」で、デプロイ済コンポジットに移動します。
- 「フロー・インスタンス」タブをクリックし、インスタンスを検索します。
- 関連するフローIDのリンクをクリックし、フロー・トレースを表示します。
D.1.3 ログ・ファイルの実際のスレッド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
D.2 メッセージ配信失敗のトラブルシューティング - ケース・スタディ
D.2.1 問題
次のケースについて考えます。
-
取引パートナのMarketIncが、発注850のドキュメントをOracleServicesに送信します。
-
OracleServicesは、最初にMessage Disposition Notification (MDN)、次に997機能確認をMarketIncに返送します。
-
MarketIncは、受信した997についてMDNをOracleServicesに返送します。
-
MarketIncは、OracleServicesからの発注確認855を待機します。しかし、MarketIncはOracleServicesから24時間以内に855メッセージを受信しません。
-
MarketIncは、OracleServicesに対して発注ID850を使用してメッセージ・ステータスをチェックします。
D.2.2 問題のトラブルシューティング
OracleServicesは、次のステップを実行して問題をトラブルシューティングします。
D.2.2.1 インバウンド・メッセージのトレース
インバウンド・メッセージをトレースするには、最初にOracle B2Bコンソールでチェックし、結果が得られない場合は、次にFusion Middleware Enterprise Manager Controlコンソールでチェックします。
D.2.2.1.1 Oracle B2Bコンソールでのインバウンド・メッセージ・エラーのチェック
Oracle B2Bコンソールでチェックするには:
-
Oracle B2Bコンソールにログオンします。
-
「レポート」リンクをクリックします。
-
「ビジネス・メッセージ」タブをクリックします。
-
ビジネス・メッセージを選択するか、発注IDによる拡張検索オプションを使用して検索します。
拡張検索オプションは「拡張」ボタンをクリックすると表示され、追加のフィールドを使用して問合せを行うことができます。発注IDのXPath式を入力します(設計時に指定されたとおり)。
-
「結果」表内の目的のビジネス・メッセージをクリックし、メッセージの詳細でエラーがないかチェックします。
-
エラーがない場合は、「ワイヤ・メッセージ」リンクをクリックして、ワイヤ・メッセージのレポートをチェックします。
-
「ワイヤ・メッセージ詳細」ウィンドウで、エラーがないかチェックします。
-
エラーがない場合は、ビジネス・メッセージの詳細に戻り、「アプリケーション・メッセージ」リンクをクリックして、アプリケーション・メッセージのレポートをチェックします。
-
「結果」表からメッセージを選択するか、発注IDを使用して関連メッセージを検索します。
-
「結果」表内の目的のビジネス・メッセージをクリックし、メッセージの詳細でエラーがないかチェックします。
エラーがない場合、メッセージはコンポジットに配信されています。
-
B2Bレポートのビジネス・メッセージの詳細でチェックする場合、「EMフロー」というフィールドがあります。たとえば、「EMフロー」が0000KM6msHL2RPM5INc9yf1JLP3m00000zの場合、0000KM6msHL2RPM5INc9yf1JLP3m00000zはリンクで、これをクリックすると、Fusion Middleware Controlにインスタンスが表示されます。
D.2.2.1.2 Fusion Middleware Enterprise Management Controlコンソールでのインバウンド・メッセージ・エラーのチェック
Oracle B2Bコンソールでエラーがない場合は、次のステップは、Fusion Middleware Enterprise Management Controlコンソールでコンポジット内のエラーをチェックします。
Fusion Middleware Enterprise Management Controlコンソールでチェックするには:
-
Fusion Middleware Enterprise Management Controlコンソールにログオンします。
-
「SOA」でコンポジットに移動します。「フロー・インスタンス」タブをクリックし、ページの右上にある「フォルトがあるインスタンス」リンクをクリックして、フォルトがないかチェックします。
-
チェックするには、B2Bレポートのビジネス・メッセージの詳細で、「Oracle B2Bコンソールでのインバウンド・メッセージ・エラーのチェック」で行ったように、「EMフロー」というフィールドをチェックし、「フローのトレース」を表示します。
-
コンポジットの様々な部分の状態をチェックし、クリックしてエラーの詳細を表示します。
D.2.2.2 アウトバウンド・メッセージのトレース
アウトバウンド・メッセージをトレースするには、最初にFusion Middleware Enterprise Manager Controlコンソールでチェックし、結果が得られない場合は、次にOracle B2Bコンソールでチェックします。
D.2.2.2.1 Fusion Middleware Enterprise Management Controlコンソールでのアウトバウンド・メッセージ・エラーのチェック
アウトバウンド・メッセージのエラーをチェックするには:
-
Fusion Middleware Enterprise Management Controlコンソールにログオンします。
-
「SOA」でコンポジットに移動します。「フロー・インスタンス」タブをクリックし、ページの右上にある「フォルトがあるインスタンス」リンクをクリックして、フォルトがないかチェックします。
-
問題のコンポジット・インスタンスIDをクリックします。
-
コンポジットの様々な部分の状態をチェックし、クリックしてエラーの詳細を表示します。
-
エラーが見つからない場合は、Oracle B2Bバインディング・コンポーネントをクリックして、Oracle B2Bレポートを表示します。
D.2.2.2.2 Oracle B2Bコンソールでのアウトバウンド・メッセージ・エラーのチェック
Fusion Middleware Enterprise Management Controlコンソールでエラーがない場合は、次のステップは、Oracle B2Bレポートでエラーをチェックします。
Fusion Middleware Enterprise Management ControlコンソールでOracle B2Bバインディング・コンポーネントをクリックすると、対応するビジネス・メッセージが表示されます。
-
「詳細」リンクをクリックしてメッセージの詳細をドリルダウンし、エラーがないかチェックします。
-
エラーがない場合は、ワイヤ・メッセージ・レポートをチェックします。
-
接続問題などの問題が見つかった場合は、エラーを修正し、アウトバウンド・メッセージを再発行します。