Java XMLバインディングでのトランザクションの分割

以下のタイプのフレームワークにおいて、Java XMLデータバインディング フレームワークのトランザクションを識別することができます。

  • Castor
  • JAXB
  • JibX
  • XMLBeans
  • XStream

次の例では、投稿された XML が PurchaseOrderDocument getOrderType() にアンマーシャルされます。

<acme>
<order>
<type>creditcard</type>
<item>Item1</item>
<item>Item2</item>
<item>Item3</item>
</order>
</acme>

次のコードスニペットは Servlet の メソッドを示しています。

public void doPost(HttpServletRequest req, HttpServletResponse resp) {
PurchaseOrderDocument poDoc = PurchaseOrderDocument.Factory.parse(po);
PurchaseOrder po = poDoc.getPurchaseOrder();
String orderType = po.getOrderType();
//read all the items
processOrder(orderType,items)
...
}

XMLバインディングに基づいてトランザクションを分割するには

  1. [Rule Configuration] タブで、[Split transactions using XML/JSON Payload or a Java method invocation] をオンにします。
  2. 分割メカニズムとして、[Java XML Binding] を選択します。
  3. 一致基準として、以下の値を入力します。
    • Unmarshaled Class Name:PurchaseOrderDocument
    • Method name:getOrderType()

エージェントはこの例のビジネストランザクションを として識別します。

このカスタムルールを使用すると、Java エージェントは XMLBeans のメソッド(XML を Java オブジェクトにアンマーシャルする)をインターセプトします。トランザクションの名前が、アンマーシャルされたオブジェクトにおいて最初のレベルの getter にない場合は、 などの再帰的 getter チェーンを使用して名前を取得します。

XML がアンマーシャルされるまでトランザクション名は取得されませんが、トランザクションの応答時間は メソッド呼び出しにより算出されます。