繁体   English   中英

Mule ESB Java组件3.8文档

[英]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文本,请执行以下任一操作:

  1. 设置有效载荷而不是Invocation属性 (将其替换或添加到现有代码中): eventContext.getMessage().setPayload("Hello World!");
  2. 返回Invocation属性而不是Payloadreturn 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM