我正在尝试packt出版的《 MULE_ESB_COOKBOOK》一书中的教程,并且我也将此问题发布在另一个论坛中。在第一章中,我正在尝试“在Mule服务器上部署第一个Hello World应用程序”练习。预期的输出是Hello /(我作为网址的一部分输入的值)
但是,当我运行该应用程序时,在输入以下内容时,我在浏览器中收到以下错误:http://localhost:9081。错误消息如下:“导致异常的组件是:DefaultJavaComponent {helloworldFlow.component.1468192631}。消息有效负载的类型为:NullPayload”
XML文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">
<http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="9081" doc:name="HTTP Listener Configuration"/>
<flow name="helloworldFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
<component class="com.org.Greeting" doc:name="Java"/>
</flow>
</mule>
Greeting.java文件如下:
package com.org;
public class Greeting {
public String sayHi(String str)
{
return "Hello " +str;
}
}
我不确定为什么会出现此错误。希望有人可以帮助,谢谢。
答案 0 :(得分:0)
这是预期的,因为您没有将任何输入传递给Java类。
尝试在Java类组件之前使用 set-payload 组件设置一些输入:
<http:listener-config name="HTTP_Listener_Configuration" host="localhost" port="9081" doc:name="HTTP Listener Configuration"/>
<flow name="helloworldFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
<set-payload value="Anirban" doc:name="Set Payload"/>
<component class="com.org.Greeting" doc:name="Java"/>
</flow>
答案 1 :(得分:0)
您的Java类错误。要在Mule 3.x中调用Java类,它必须实现Mule org.mule.api.lifecycle.Callable接口。请参见https://docs.mulesoft.com/mule-runtime/3.9/java-component-reference#basic-hello-world-java-component-class
上的示例我猜测日志中的完整错误指向正确的问题。