[英]Mule ESB Java Component 3.8 Doc
我试图从官方文档中回复基本的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:8081后,我无法识别Hello World! 在浏览器中呈现的消息。
在上一个版本中有什么变化吗? 我也应该包含setPayload元素吗?
引用代码后,它会设置一个Invocation属性或Variable ,并返回现有的有效载荷 ,该载荷可以是{NullPayload}
因为尚未定义。 尝试调试和评估Mule Debugger中的“ 变量”选项卡,您应该找到一个名为myProperty
的新变量。
为了获得基本的Hello World文本,请执行以下任一操作:
eventContext.getMessage().setPayload("Hello World!");
return eventContext.getMessage().getInvocationProperty("myProperty");
首先要检查的是您正确地实例化了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;
}
记住设置有效载荷并返回消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.