0

トランザクションのロールバックを使用してテーブルに値を挿入したいので、wso2esb4.7.0 を使用しています。このため、クラスメディエーターを書きたいと思います コードを書いているときにJavaでエラーが発生します エラーはesbがトランザクションロールバックオプションで機能していません 私のコードは

<?xml version="1.0" encoding="UTF-8"?>
<sequence xmlns="http://ws.apache.org/ns/synapse"
          name="JmsStore_Seq"
          trace="disable">
   <property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/>
   <property xmlns:ns="http://org.apache.synapse/xsd"
             name="Authentication"
             expression="//Authentication/text()"/>
   <property xmlns:ns="http://org.apache.synapse/xsd"
             name="UserId"
             expression="//UserId/text()"
             scope="default"
             type="STRING"/>
   <property xmlns:ns="http://org.apache.synapse/xsd"
             name="WorkOUid"
             expression="//WorkOUid/text()"/>
   <property xmlns:ns="http://org.apache.synapse/xsd"
             name="WorkPartyBranchId"
             expression="//WorkPartyBranchId/text()"/>

   <filter xmlns:ns="http://org.apache.synapse/xsd"
           xpath="get-property('Authentication')=''">
      <then>
         <payloadFactory>
            <format>
               <ResponseJSON xmlns="">
                  <Exception>Service trying to connect inactive service</Exception>
                  <Status>101503</Status>
               </ResponseJSON>
            </format>
            <args/>
         </payloadFactory>
         <property name="HTTP_METHOD" value="POST" scope="axis2" type="STRING"/>
         <property name="RESPONSE" value="true" scope="default" type="STRING"/>
         <property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
         <send/>
      </then>
      <else>
         <filter xpath="get-property('Authentication')='false'">
            <then>
               <payloadFactory>
                  <format>
                     <ResponseJSON xmlns="">
                        <Exception>Authentication Failed</Exception>
                        <Status>401</Status>
                     </ResponseJSON>
                  </format>
                  <args/>
               </payloadFactory>
               <property name="HTTP_METHOD" value="POST" scope="axis2" type="STRING"/>
               <property name="RESPONSE" value="true" scope="default" type="STRING"/>
               <property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
               <send/>
            </then>
            <else>

               <property name="jmspayload"
                         expression="get-property('readingspayload')"
                         type="OM"/>
               <property name="ResponseJSON" expression="$body/ResponseJSON" type="OM"/>

               <property name="jmsuri" expression="get-property('jmsuri')"/>
               <property name="jmsqueue" expression="get-property('jmsqueue')"/>

               <payloadFactory >
                <format>
                    <PLData>                    
                      <JMpayload>$1</JMpayload> 
                      <AuthData>$2</AuthData>  
                    </PLData>                   
                </format>
                <args>

                    <arg xmlns:ns="http://org.apache.synapse/xsd" expression="get-property('jmspayload')" />
                    <arg xmlns:ns="http://org.apache.synapse/xsd" expression="get-property('ResponseJSON')"/>
                </args>
                </payloadFactory>               


               <class name="in.youtility.esb.custommediators.JMSStoreMediator" />
               <payloadFactory>
                  <format>
                     <ResponseJSON xmlns="">
                        <Body>
                           <Datalist>
                              <Data>Successfully stored</Data>
                           </Datalist>
                        </Body>
                        <Status>200</Status>
                     </ResponseJSON>
                  </format>
                  <args/>
               </payloadFactory>
               <header name="To" action="remove"/>
               <property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
               <property name="RESPONSE" value="true"/>
               <send/>
            </else>
         </filter>
      </else>
   </filter>
   <description/>
</sequence>

そして、私はこのJavaクラスのために書いていますが、これを見つけることができるjarファイルを見つけることができませんでした ありがとうFaisal

4

2 に答える 2

1

クラス メディエーターを作成する必要がある場合は、このリンクをたどることができます。jar ファイルを作成して ESB にインストールするためのすべての手順が説明されています。

http://soatutorials.blogspot.com/2013/08/10-minute-tutorial-for-extending-wso2.html

于 2013-09-14T09:31:18.923 に答える
0

ESB で DB トランザクションを行うための最も簡単で拡張可能な推奨される方法は、ESB 内で WSO2 DSS を使用することです。DB にデータを挿入するためのデータ サービスを非常に簡単に作成できます。また、ESB トランザクション メディエータ [1] を使用してトランザクションを実現します。

[1] - http://docs.wso2.org/display/ESB470/Transaction+Mediator

于 2013-09-12T16:29:26.187 に答える