【问题标题】:Mule ESB Java Component 3.8 DocMule ESB Java 组件 3.8 文档
【发布时间】:2016-06-28 01:46:51
【问题描述】:

我正在尝试从官方文档中回复基本的 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 访问 localhost:8081 后,我无法看到 Hello World!在浏览器中呈现的消息。

上一个版本有什么变化吗?我还应该包含一个 setPayload 元素吗?

【问题讨论】:

    标签: mule mule-component


    【解决方案1】:

    引用它设置调用属性变量的代码,并返回现有的Payload,它可以是{NullPayload},因为尚未定义.尝试调试和评估 Mule Debugger 内的 Variables 选项卡,您应该会找到一个名为:myProperty 的新变量。

    为了获得基本的 Hello World 文本,请执行以下选项之一:

    1. 设置 Payload 而不是 Invocation Property(替换或添加到现有代码):eventContext.getMessage().setPayload("Hello World!");
    2. 返回 Invocation 属性 而不是 Payloadreturn eventContext.getMessage().getInvocationProperty("myProperty");

    【讨论】:

    • 感谢这对我有用!现在我明白了为什么有效负载为空,我将消息分配给它并可以在浏览器中呈现。-
    【解决方案2】:

    首先要检查的是您是否正确地实例化了 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;
    }
    

    记得设置payload并返回消息。

    【讨论】:

    • 在配置 XML 中,我定义了这样的 Java 类: 设置paylod后对我有用。-
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多