SOAPtoPOJOTТрансформатор в муле ESB - PullRequest
1 голос
/ 06 марта 2012

В моем приложении клиент отправляет SOAP-запрос Mule ESB, и поэтому я хочу SOAPtoPOJOTransformer в моем ESB, чтобы он передавал объект POJO моему классу компонента.

Пожалуйста, дайте мне пример или фрагмент кода для этого преобразователя.

Спасибо, Нараянан

Ответы [ 3 ]

3 голосов
/ 06 марта 2012

CXF + JAXB позаботится об этом за вас.

См .: http://www.mulesoft.org/documentation/display/MULE3USER/Building+Web+Services+with+CXF

1 голос
/ 21 ноября 2012

В моем приложении у меня есть 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>

0 голосов
/ 12 апреля 2017

Да, вам нужно написать преобразование переплетения данных, чтобы преобразовать 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>
...