2013-10-28 3 views
0

내가이 프록시를 구성한 :WSO2 PayloadFactory 중재자 빈 인수 내 WSO2 ESB 4.7.0에서

{ 
    "codice":"0", 
    "messaggio":"Operazione effettuata 18:12", 
    "path":"\/path\/1AASSCOGNOME_NOME.111.2231\/", 
    "documenti":[{ 
      "idAggregatoContenitore":"3508", 
      "idDocumento":"016601", 
      "idVersione":"17010", 
      "numVersione":"1", 
      "tipoDocumento":"Documento", 
      "autore":"sysadmin", 
      "titolo":"prova1", 
      "fileName":"FStandard.xml", 
      "checkedOut":"false", 
      "idDocumentoPadre":"", 
      "flagAllegati":"false", 
      "flagDaProtocollare":"true", 
      "dataCreazione":"11\/02\/2013 19:05", 
      "dataChekin":"11\/02\/2013 19:05", 
      "mimeType":"text\/xml", 
      "empty":"false", 
      "data":"1660100000", 
      "cache":"false", 
      "tipo":"D", 
      "nome":"prova1", 
      "keyData":"16601", 
      "keyNome":"prova1", 
      "keyNumero":"", 
      "keyTipo":"D", 
      "fileExtension":"path\/xml_file.png", 
      "evidenza":"false", 
      "originalDocumentoPadreId":"", 
      "originalDocumentoId":"016601", 
      "originalAggregatoContenitoreId":"3508" 
      }, 
      { 
      "idAggregatoContenitore":"3508", 
      "idDocumento":"016602", 
      "idVersione":"17011", 
      "numVersione":"1", 
      "tipoDocumento":"Documento", 
      "autore":"sysadmin", 
      "titolo":"123456789", 
      "fileName":"HTTP Proxy Server.jmx", 
      "checkedOut":"false", 
      "idDocumentoPadre":"", 
      "flagAllegati":"false", 
      "flagDaProtocollare":"true", 
      "dataCreazione":"11\/02\/2013 19:19", 
      "dataChekin":"11\/02\/2013 19:19", 
      "mimeType":"application\/octet-stream", 
      "empty":"false", 
      "data":"1660200000", 
      "cache":"false", 
      "tipo":"D", 
      "nome":"123456789", 
      "keyData":"16602", 
      "keyNome":"123456789", 
      "keyNumero":"", 
      "keyTipo":"D", 
      "fileExtension":"path\/Documento.png", 
      "evidenza":"false", 
      "originalDocumentoPadreId":"", 
      "originalDocumentoId":"016602", 
      "originalAggregatoContenitoreId":"3508" 
      }], 
    "data":"350800000", 
    "tipoAggregatoEnum":"R", 
    "statoEnum":"aperto", 
    "keyData":"1360602720000", 
    "keyNome":"1aasscognome_nome.111.2231", 
    "nomeAggregatoNoNumero":"1AASSCOGNOME_NOME.111.2231", 
    "keyNumero":"1AASSCOGNOME_NOME.111.2231", 
    "keyTipo":"R", 
    "originalAggregatoId":"3508", 
    "originalAggregatoPadre":"3108" 
} 

표준 동작대로 ESB는 들어오는 json 메시지를 xml 형식의 메시지로 변환합니다. 이제 outSequence에 내가 원하는 :

1) 클라이언트에 RestService 응답을 다시 전송 : 중재자

2에 의해) 다음 난에 다음 메시지 페이로드에서 일부 요소를 추출 XML 메시지를 구축하고자 다른 곳에서는 jms 프로토콜로 보내십시오.

프록시는 PayloadFactory 조정자를 제외하고는 모두 잘 작동합니다. 실제로 페이로드 공장 중재자에 의해 만들어진 메시지가 몸이 비어있다 : 지정된 인수 태그가 비어있는 이유

이 가
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"> 
<Body> 
    <code xmlns="http://ws.apache.org/ns/synapse"/> 
</Body> 
</soapenv:Envelope> 

사람이 나에게 말할 수있는 (XPath 표현식은 올바른 것 같다)? 뭐가 문제 야? 감사합니다.

답변

0

아마도 해결했습니다. 호출 클라이언트에 대한 서비스의 응답을 반환해야한다 간단한

<send/> 

에 의해 최초의 다음 outsequence에서 나는이 메시지를 보내야합니다. 이 후 다른 곳으로 두 번째 메시지를 보내야합니다. 위의 코드에서 다른 중재자를 사용했지만 ... 첫 번째 것이 (즉,) 메시지 페이로드를 비우는 것 같습니다. 따라서 arg 표현식이 비어 있습니다. 복제 중재자를 사용하여 문제를 해결했습니다 :

<outSequence> 
    <log> 
     <property name="codice" expression="//codice"/> 
    </log> 
    <log level="full"/> 
    <switch source="//codice"> 
     <case regex="asd"> 
      <send/> 
     </case> 
     <case regex="0"> 
      <log> 
       <property name="codice" value="check1"/> 
      </log> 
      <clone> 
       <target> 
       <sequence> 
        <send/> 
       </sequence> 
       </target> 
       <target> 
       <sequence> 
        <payloadFactory media-type="xml"> 
         <format> 
          <messaggio>$1</messaggio> 
         </format> 
         <args> 
          <arg xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" evaluator="xml" 
           expression="//messaggio"/> 
         </args> 
        </payloadFactory> 
        <property name="messageType" value="application/xml"/> 
        <log level="full"/> 
        <send> 
         <endpoint> 
          <address uri="jms:/NuovoEvento?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.wso2.andes.jndi.PropertiesFileInitialContextFactory&java.naming.provider.url=repository/conf/jndi.properties&transport.jms.DestinationType=topic"/> 
         </endpoint> 
        </send> 
       </sequence> 
       </target> 
      </clone> 
     </case> 
    </switch> 
    </outSequence>