我正在尝试回复官方文档中的基本Java组件示例:
https://docs.mulesoft.com/mule-user-guide/v/3.8/java-component-reference
IDE是v.6.0.1
我意识到Java类应该扩展Callable。这与以前版本的MULE有很大不同。所以在我的情况下
package javacomponent;
import org.mule.api.MuleEventContext;
import org.mule.api.lifecycle.Callable;
public class helloWorldComponent implements Callable{
@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
eventContext.getMessage().setInvocationProperty("myProperty", "Hello World!");
return eventContext.getMessage().getPayload();
}
}
我遇到的问题是,在运行应用程序并制作http / get to localhost之后:8081我无法访问Hello World!在浏览器中呈现的消息。
上一版本有什么变化吗?我还应该包括一个setPayload元素吗?
答案 0 :(得分:2)
参考代码,它设置调用属性或变量,并返回现有的 Payload ,它可以是{NullPayload}
,因为不是定义了。尝试调试和评估 Mule Debugger 中的 Variables 选项卡,您应该找到一个名为myProperty
的新变量。
要获取基本的Hello World文本,请执行以下选项之一:
eventContext.getMessage().setPayload("Hello World!");
return eventContext.getMessage().getInvocationProperty("myProperty");
答案 1 :(得分:0)
要检查的第一件事是您正确地实例化Java类。我不清楚配置Java对象的UI或可视方式。我发现了一个非常简单的Spring配置示例:
<spring:bean id="ordersTransform" name="OrdersTransformSingleton" class="org.dlw.transport.OrdersTransformSingleton" scope="singleton" />
并且,Java对象组件:
首先检查它,并确保在运行时实例化您的类。然后在您实现的可调用方法中添加一个断点,并查看应用程序指针是否让您进入该方法。如果是这样,请将您的消息添加到有效负载。
public Object onCall(MuleEventContext eventContext) throws Exception {
// freshen
this.transportObj = null;
this.transportObj = new ArrayList<OrdersValueObject>();
MuleMessage res = eventContext.getMessage();
List<Map> list = (LinkedList) res.getPayload();
...
res.setPayload(transportObj);
return res;
}
请记住设置有效负载并返回消息。