我正在使用Mule 3.3.CE
我有一个名为SpringObject的类,它实现了Callable接口
package com.threads.test;
import org.mule.api.MuleEventContext;
import org.mule.api.lifecycle.Callable;
public class SpringObject implements Callable {
private String someData;
public String getSomeData() {
return someData;
}
public void setSomeData(String someData) {
this.someData = someData;
}
@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
System.out.println("CALL SPRING --->>"+someData);
return eventContext.getMessage();
}
}
我的流程是
<http:connector name="httpConnectorEntryPoint" doc:name="HTTP\HTTPS"/>
<spring:beans xmlns="http://www.springframework.org/schema/beans">
<spring:bean id="component" name="component" class="com.threads.test.SpringObject" lazy-init="false">
</spring:bean>
</spring:beans>
<flow name="TestThreadsFlow1" doc:name="TestThreadsFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8099" path="m" connector-ref="httpConnectorEntryPoint" doc:name="HTTP"/>
<set-payload value="#["ExitA"]" doc:name="Set Payload"/>
<component doc:name="Java">
<spring-object bean="component">
<property key="someData" value="Information"/>
</spring-object>
</component>
</flow>
问题是当我运行我的流程并使用http连接器时,控制台会显示
CALL SPRING ---&gt;&gt; null
而不是
CALL SPRING ---&gt;&gt;信息
可能是什么?
答案 0 :(得分:3)
你可以尝试在流程之外配置你的spring bean,如下所示:
<spring:bean id="component" name="component"
class="com.threads.test.SpringObject" lazy-init="false">
<spring:property name="someData" value="Information" />
</spring:bean>
and inside the flow do:
<component>
<spring-object bean="component" />
</component>
答案 1 :(得分:2)
来自XSD中的属性元素描述:
设置Mule属性。这是可以设置的名称/值对 组件,服务等,并提供一种通用的方式 配置系统。通常,您不需要使用通用 像这样的属性,因为几乎所有的功能都是通过公开的 专用元素。但是,它可用于配置模糊 或忽略选项以及从通用配置传输 端点元素。
这意味着它不适合您尝试使用它。在bean中设置属性的适当方法如下:
<spring:bean id="component" name="component" class="com.threads.test.SpringObject" lazy-init="false">
<spring:property name="someData" value="Information"/>
</spring:bean>