组件异常

时间:2018-11-21 18:25:12

标签: java mule esb

我正在尝试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;
     }

 }

我不确定为什么会出现此错误。希望有人可以帮助,谢谢。

2 个答案:

答案 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

上的示例

我猜测日志中的完整错误指向正确的问题。