Mule 3.3可以使用JAXB自动将XML字符串解组为对象,具体如下:
1.你首先用spring注册你的jaxb注释类。
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的情况下完成这个?
感谢。
答案 0 :(得分:3)
正如您所猜测的那样,JAXB反序列化不会发生,因为没有组件可以满足:
- 有一个组件需要输入类型
醇>
那么如果你有一个自动变压器就可以做到这一点:
<auto-transformer returnClass="foo.bar.MyJaxbAnnotatedClass" />
答案 1 :(得分:1)
Mule XML Module提供OOTB JAXB Transformer。我宁愿尽可能利用mule功能而不是编写自定义代码