1

我正在尝试按照文档中的转换器示例将字符串输入转换为 URL 列表,但它会引发错误。

示例在这里: http: //www.mulesoft.org/documentation/display/MULE3USER/Transformer+Annotation#TransformerAnnotation-WorkingwithCollections

我的变压器代码是从他们那里复制粘贴的。

当我第一次这样做时,我通过放入我的配置 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
4

2 回答 2

3

您不能使用带有@Transformeras注释的类,custom-transformer因为它不是真正的org.mule.api.processor.MessageProcessor。只有真正的消息处理器可以直接在 XML 配置中使用并显式调用。

正如文档@Transformer所说:

在 Mule 3.x 中没有机制来实际调用从带注释的方法构造的转换器。

如果你想让你的变压器在一个流程中启动,你需要使用:

<auto-transformer returnClass="java.util.List.class"/>

假设它返回一个列表并且没有其他合适的具有更高优先级的注册转换器。

否则,通过扩展创建一个真正的转换器,org.mule.transformer.AbstractMessageTransformer然后将其与custom-transformer.

于 2012-08-29T15:46:05.970 回答
0

请使用 Java Component 而不是 Java Transformer..

于 2017-06-12T21:15:42.393 回答