【问题标题】:SOAPtoPOJOTransformer in mule esbmule esb 中的 SOAPtoPOJOTransformer
【发布时间】:2017-04-12 20:36:53
【问题描述】:

在我的应用程序中,客户端向 Mule ESB 发送 SOAP 请求,因此我希望在我的 ESB 中使用 SOAPtoPOJOTransformer,以便将 POJO 对象提供给我的组件类。

请给我这个转换器的示例或代码 sn-p。

谢谢, 纳拉亚南

【问题讨论】:

    标签: esb mule


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      在我的应用程序中,我有一个 xml 声明我需要使用的所有转换器,以便我在我的流程中引用它们。见下文。 (你不需要使用iso-8859-1)

      <?xml version="1.0" encoding="UTF-8"?>
      <mule
      xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:mxml="http://www.mulesoft.org/schema/mule/xml"
      xmlns:vm="http://www.mulesoft.org/schema/mule/vm"
      xmlns:spring="http://www.springframework.org/schema/beans"
      xsi:schemaLocation="
          http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/3.2/mule.xsd
          http://www.mulesoft.org/schema/mule/xml http://www.mulesoft.org/schema/mule/xml/3.2/mule-xml.xsd
          http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/3.1/mule-vm.xsd
          http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
      
      <mxml:jaxb-context
          name="jaxb-context"
          packageNames="my.package.v1:my.package.v2:soap.package" />
      
      <mxml:jaxb-xml-to-object-transformer
          name="xml-to-object"
          encoding="ISO-8859-1"
          jaxbContext-ref="jaxb-context"
          ignoreBadInput="true" />
      
      <mxml:jaxb-object-to-xml-transformer
          name="object-to-xml"
          encoding="ISO-8859-1"
          jaxbContext-ref="jaxb-context"
          returnClass="java.lang.String"
          ignoreBadInput="true" />
      
      <byte-array-to-string-transformer
          name="byte-array-to-string"
          encoding="ISO-8859-1"
          returnClass="java.lang.String" />
      
      <string-to-byte-array-transformer
          name="string-to-byte-array"
          encoding="ISO-8859-1"
          returnClass="byte[]" />
      
      <custom-transformer
          name="xml-to-xml-stream-reader"
          class="org.mule.module.xml.transformer.XmlToXMLStreamReader" />
      
      <object-to-string-transformer name="object-to-string" />
      
      <flow name="ByteArrayToObjectXml">
      
          <vm:inbound-endpoint
              path="myapp/conversor/byte-array-to-object-xml"
              exchange-pattern="request-response" />
      
          <transformer ref="byte-array-to-string" />
          <transformer ref="xml-to-object" />
      </flow>
      

      【讨论】:

        【解决方案3】:

        是的,你需要编写数据编织转换来将xml转换为java。我提供了一个示例流程,你需要编写类似的转换代码。

         <flow name="getDeltaFlightsFlow">
                <http:listener config-ref="HTTP_Listener_Configuration" path="/delta" allowedMethods="GET" doc:name="HTTP"/>
        
                <dw:transform-message doc:name="Transform Message">
                    <dw:set-payload><![CDATA[%dw 1.0
        %output application/xml
        %namespace ns0 http://soap.training.mulesoft.com/
        ---
        {
            ns0#findFlight: {
                destination: flowVars.code as :string
            }
        }]]></dw:set-payload>
                </dw:transform-message>
                <ws:consumer config-ref="Delta_Service_Consumer" operation="findFlight" doc:name="Delta SOAP Reqst"/>
                <dw:transform-message metadata:id="fdbaa716-f263-4812-a153-6509b7407ee8" doc:name="Transform Message">
                    <dw:set-payload><![CDATA[%dw 1.0
        %output application/java
        %namespace ns0 http://soap.training.mulesoft.com/
        ---
        {
            flights: payload.ns0#findFlightResponse.*return map ((return , indexOfReturn) -> {
                airlineName: return.airlineName,
                price: return.price,
                departureDate: return.departureDate,
                planeType: return.planeType,
                origin: return.origin,
                code: return.code,
                emptySeats: return.emptySeats,
                destination: return.destination
            })
        }]]></dw:set-payload>
                </dw:transform-message>
                <logger level="INFO" doc:name="Logger"/>
        
            </flow>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-01
          相关资源
          最近更新 更多