この章では、インスタンス・メッセージ・データにプログラムでアクセスするためのインスタンス・メッセージJava APIの概要について説明します。
項目は次のとおりです。
インスタンス・メッセージAPIのInstanceMessageUtilクラスの詳細は、Oracle Fusion Middleware B2Bのインスタンス・メッセージJava APIリファレンスを参照してください。
インスタンス・メッセージJava APIは、取引パートナ間で交換されるランタイム・データを取得するためにOracle B2Bで提供されているJava APIです。
次のような場合にインスタンス・メッセージJava APIを使用します。
バックエンド・アプリケーションからの再発行
特定の注文番号のステータスのチェック
バックエンド・アプリケーションによるペイロードのイントロスペクト
メッセージの残りの再試行のチェック
ペイロードのワイヤ・メッセージのチェック
インスタンス・メッセージAPIはランタイム・データを問い合せて、様々な基準に対するインスタンス・データの形式で結果を提供します。インスタンス・メッセージAPIは、ビジネス・メッセージとワイヤ・メッセージの両方をカプセル化しているインスタンス・メッセージ・ビューの上位のJavaラッパーです。
| 
 注意: このAPIを使用するときは、b2b.jarおよびweblogic.jarまたはwlthint3client.jarに加えて、追加ライブラリをクラスパスの一部として設定する必要があります。 | 
インスタンス・メッセージAPI問合せオプション
インスタンス・メッセージJava APIを使用すると、次の基準に基づいてインスタンス・メッセージを取得できます。
アグリーメント名
管理番号、グループ管理番号、トランザクション管理番号、取引パートナ名、ドキュメント・タイプ
日付範囲と取引パートナ
日付範囲、方向、取引パートナ
メッセージID
メッセージの状態
プロトコル・メッセージID
取引パートナ
取引パートナと方向
取引パートナとドキュメント・タイプ
取引パートナとメッセージの状態
XPath式(1つまたは2つのXPath式で評価できます)
XPath値(1つまたは2つのXPath式で評価できます)
対話ID
インスタンス・メッセージAPIの詳細は、Oracle Fusion Middleware B2Bのインスタンス・メッセージJava APIリファレンスを参照してください。
次の出力に基づいてロジックを作成できます。
Vector messages = (Vector) imUtil.getInstanceMessagesForTP("GlobalChips")
この例を例24-1に示します。
これと似たもう1つのメソッドgetInstanceMessagesForMsgId(String messageId)が公開されています。すべてのメソッドについては、Oracle Fusion Middleware B2Bのインスタンス・メッセージJava APIリファレンスを参照してください。
例24-1 取引パートナ名に基づく取得
import java.util.Vector;
import oracle.tip.b2b.utility.InstanceMessageUtil;
 
public class MyInstanceData {
    public static void main(String[] args) throws Exception {
 
        InstanceMessageUtil imUtil = new InstanceMessageUtil();
        Vector messages = (Vector) imUtil.getInstanceMessagesForTP("GlobalChips");
        System.out.println(messages.size());
    }
}
トラブルシューティングについては、次のトピックを参照してください。
問合せから多数のメッセージが変える場合、weblogic.socket.MaxMessageSizeExceededExceptionが発生することがあります。
この問題を解決するには、weblogic.MaxMessageSizeの値を増やし、コマンド・ラインで-Dweblogic.MaxMessageSize=100000000を渡します。このパラメータ設定を指定すると、100 MBのメッセージを受信できます。
次に例を示します。
java -cp .:$ORACLE_HOME/wlserver_10.3/server/lib/wlthint3client.jar:$SOA_HOME/ /soa/modules/oracle.soa.b2b_11.1.1/b2b.jar -Dweblogic.MaxMessageSize=100000000 TestInstanceMsg
大きいインバウンドまたはアウトバウンド・ペイロードの場合は、ペイロード自体を返すのではなく、ペイロードの場所に対する参照を返します。
次に例を示します。
/tmp/GlobalChips_1_custnonxml_largepayload.dat@9844C4341297D3EB7B60000011A0CC9D .dat
Oracle B2Bによる大きいペイロードの処理の詳細は、付録A「大きなペイロードの処理」を参照してください。
weblogic.jarを使用してリモートで問合せを実行しているときに、Oracle WebLogic Serverのクラスパスの問題が発生し、java.lang.ClassNotFoundException:weblogic.security.subject.AbstractSubject例外を受け取る場合があります。
この問題を解決するには、wlthint3client.jarを使用して問合せを実行してください。
次に例を示します。
java -cp .:$ORACLE_HOME/wlserver_10.3/server/lib/wlthint3client.jar:$SOA_HOME/ /soa/modules/oracle.soa.b2b_11.1.1/b2b.jar TestInstanceMsg