Исключение компонента - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь изучить учебник из книги 'MULE_ESB_COOKBOOK', публикуя пакет, и разместил этот вопрос также на другом форуме.В первой главе я провожу упражнение «Развертывание вашего первого приложения Hello World на сервере Mule».Ожидаемый вывод: Hello / (значение, которое я ввожу как часть URL)

Однако, когда я запускаю приложение, я получаю следующую ошибку в браузере при вводе этого: 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 голосов
/ 22 ноября 2018

Ваш класс Java неправильный.Для вызова Java-класса в Mule 3.x необходимо реализовать интерфейс Mule org.mule.api.lifecycle.Callable.См. Пример на https://docs.mulesoft.com/mule-runtime/3.9/java-component-reference#basic-hello-world-java-component-class

Я предполагаю, что полная ошибка в журнале указывает на правильную проблему.

0 голосов
/ 21 ноября 2018

Это ожидаемо, потому что вы не передаете входные данные в ваш класс Java.
Попробуйте установить некоторые входные данные, используя set-payload компонент перед компонентом класса Java:

 <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>
...