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バインディングに基づいてトランザクションを分割するには
- [Rule Configuration] タブで、[Split transactions using XML/JSON Payload or a Java method invocation] をオンにします。
- 分割メカニズムとして、[Java XML Binding] を選択します。
- 一致基準として、以下の値を入力します。
- Unmarshaled Class Name:
PurchaseOrderDocument - Method name:
getOrderType()
- Unmarshaled Class Name:
エージェントはこの例のビジネストランザクションを として識別します。
このカスタムルールを使用すると、Java エージェントは XMLBeans のメソッド(XML を Java オブジェクトにアンマーシャルする)をインターセプトします。トランザクションの名前が、アンマーシャルされたオブジェクトにおいて最初のレベルの getter にない場合は、 などの再帰的 getter チェーンを使用して名前を取得します。
XML がアンマーシャルされるまでトランザクション名は取得されませんが、トランザクションの応答時間は メソッド呼び出しにより算出されます。