我正在尝试遵循将字符串输入转换为URL列表的文档中的转换器示例,但它会引发错误。
我的变压器代码是从他们那里复制粘贴的。
当我第一次这样做时,我通过输入我的配置xml:
来设置变换器<custom-transformer class="com.test.transformer.StringToListTransformer" doc:name="StringToUrlList"/>
注意到要求“注册”变换器,我后来在文件的开头添加了(在开始标记之后):
<spring:bean id="stringToListTransformer" class="com.test.transformer.StringToListTransformer"/>
但是,当我运行应用程序时,我收到以下错误:
Exception in thread "main" org.mule.module.launcher.DeploymentInitException: IllegalStateException: Cannot convert value of type [com.test.transformer.StringToListTransformer] to required type [org.mule.api.processor.MessageProcessor] for property 'messageProcessors[3]': no matching editors or conversion strategy found
答案 0 :(得分:3)
您不能将使用@Transformer
注释的类作为custom-transformer
,因为它不是真正的org.mule.api.processor.MessageProcessor
。只有真正的消息处理器可以直接在XML配置中使用并显式调用。
正如doc for @Transformer
所说:
Mule 3.x中没有机制来实际调用由带注释的方法构造的变换器。
如果您想让变压器在流程中启动,您需要使用:
<auto-transformer returnClass="java.util.List.class"/>
假设它返回一个列表,并且没有其他合适的注册变换器具有更高的优先级。
否则,通过扩展org.mule.transformer.AbstractMessageTransformer
创建一个真正的转换器,然后将其与custom-transformer
一起使用。
答案 1 :(得分:0)
请使用Java Component而不是Java Transformer ..