この章では、次の2つのAPIの概要について説明します。
インスタンス・メッセージ・データへプログラムでアクセスするためのインスタンス・メッセージJava API。
パートナ・メタデータ情報(識別子リスト、パラメータ、連絡先情報の詳細など)を取得するためのパートナ・メタデータ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")
この例を例26-1に示します。
これと似た別のメソッドgetInstanceMessagesForMsgId(String messageId)
があります。すべてのメソッドについては、Oracle Fusion Middleware B2Bのインスタンス・メッセージJava APIリファレンスを参照してください。
例26-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
を渡します。このパラメータ設定を指定すると、100MBのメッセージを受信できます。
例:
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
パートナ・メタデータ情報(識別子リスト、パラメータ、連絡先情報の詳細など)を取得するために、パートナ・メタデータAPIクラスoracle.tip.b2b.utility.MetadataUtil.javaが導入されました。このAPIには、クライアントがメタデータ情報を取得するのに役立つ次のメソッドが含まれます。
public String getTradingPartnerName(String identifierType, String identifierValue) throws Exception
このメソッドは、引数として識別子タイプと識別子値をとることによって、パートナ名を取得します。指定した識別子タイプまたは識別子値あるいはその両方が存在しない場合、返される取引パートナ名はnullです。
注意: 2つの取引パートナを同じ識別子タイプおよび識別子値のペアで構成することはできません。このメソッドは、識別子タイプと識別子値のペアに対して単一の取引パートナ名を返します。 |
public Map<String, List<String>> getIdentifiers(String tpName) throws Exception
このメソッドは、指定された取引パートナ(TP)に対するパラメータ名とその値のキーと値のペア(マップ)を返します。個々の値は、このマップを使用した繰返しによって抽出できます。
指定されたTP名が存在しない場合、取引パートナが存在しないというメッセージを含む例外を受け取ります。
public Map<String, String> getTradingPartnerParameters(String tpName) throws Exception
このメソッドは、指定された取引パートナに対するパラメータ名とその値のキーと値のペア(マップ)を返します。個々の値は、このマップを使用した繰返しによって抽出できます。指定されたTP名が存在しない場合、取引パートナが存在しないというメッセージを含む例外を受け取ります。
public Map<String, List<String>> getContactInfo(String tpName) throws Exception
このメソッドは、指定された取引パートナに対する連絡先情報タイプとその値のキーと値のペア(マップ)を返します。連絡先情報タイプが複数の値を持つ場合、取得されるマップには値のリスト全体が含まれます。個々の値は、このマップを使用した繰返しによって抽出できます。
指定されたTP名が存在しない場合、取引パートナが存在しないというメッセージを含む例外を受け取ります。
次のサンプル・コードは、APIの使用方法を示しています。これは、識別子タイプ、識別子値およびTP名の引数を渡すことによって実行できます。
例26-2 サンプル・コード - パートナ・メタデータAPI
import java.util.Map; import oracle.tip.b2b.utility.MetadataUtil; public class MyDesignTimeData { public static void main(String[] args) throws Exception { MetadataUtil mdUtil = = new MetadataUtil(); String tpName = "GlobalChips"; Map<String, List<String>> identifiersMap = mdUtil.getIdentifiers(tpName); } }
このサンプル・コードを実行するには、b2b.jar、weblogic.jarおよびjndi.propertiesファイルがクラスパス内にある必要があります。jndi.propertiesファイルには、次のエントリが含まれている必要があります。
java.naming.provider.url=t3://<localhost>:<port>
java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
java.naming.security.principal=<username>
java.naming.security.credentials=<password>