Mule ESB JAXB XML для преобразования объектов лучше?

Mule 3.3 может автоматически преобразовывать XML-строку в объект с помощью JAXB при условии, что:
1. сначала вы регистрируете свои аннотированные классы jaxb в Spring. 2. есть компонент, который требует в качестве ввода такой тип

Итак, мне удалось сделать трансформацию, но мне пришлось создать «DumbTransformer», который ничего не делает. У него есть метод, который возвращает тот же объект, который он получает. Мне это нужно, чтобы инициировать преобразование XML в объект, чтобы я мог продолжить обработку сообщения.

Пример потока:

<spring:beans>
    <spring:bean id="dumbTransformer" class="foo.bar.DumbTransformer"/>
</spring:beans>

<flow name="main" doc:name="main">
    <vm:inbound-endpoint path="in" doc:name="VM" />
        <component doc:name="Java">
            <spring-object bean="dumbTransformer"/>
        </component>
        <splitter expression="#[payload.items]" doc:name="Split Items"/>
    <logger message="#[payload]" level="INFO" doc:name="Log Item"/>
    <vm:outbound-endpoint path="out" doc:name="VM" />
</flow>

DumbTransformer.java

package foo.bar;

@ContainsTransformerMethods
public class InvoiceUnmarshaller extends AbstractTransformer {

    @Transformer
    public MyJaxbAnnotatedClass foo(@Payload MyJaxbAnnotatedClass i) {
        return i;
    }

}

Есть ли способ сделать это без создания таких DumbTransformers?

Спасибо.


person pakman    schedule 11.10.2012    source источник


Ответы (2)


Как вы уже догадались, десериализация JAXB не происходит, потому что нет компонента, который нужно удовлетворить:

  1. есть компонент, который требует такой тип в качестве ввода

Так что, если бы у вас был автотрансформатор, чтобы делать именно это:

<auto-transformer returnClass="foo.bar.MyJaxbAnnotatedClass" />
person David Dossot    schedule 11.10.2012

модуль Mule XML предоставляет OOTB JAXB Transformer. Я бы предпочел использовать возможности мулов, когда это возможно, а не писать собственный код.

person genjosanzo    schedule 11.10.2012
comment
Спасибо за ответ, но я нашел ваш ответ расплывчатым. - person pakman; 11.10.2012