2016-06-28 7 views
0

私は公式ドキュメントから基本的なJavaコンポーネントの例を返信しようとしています:ミュールESBのJavaコンポーネント3.8ドク

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のをSEはできません!ブラウザに表示されるメッセージ。

最終バージョンで何か変わったことはありますか? setPayload要素も含めるべきですか?コードを参照

答えて

2

起動プロパティ又は変数を設定し、まだ定義されていないので、{NullPayload}とすることができる既存のペイロードを返します。 変数タブをデバッグして評価してくださいミュールデバッガmyPropertyという名前の新しい変数があります。 eventContext.getMessage().setPayload("Hello World!");:代わりに呼び出しプロパティ(置き換えるか、または既存のコードに追加)のペイロードを設定

  1. 基本的なHello Worldのテキストを取得するためには、次のオプションのいずれかを実行します。 return eventContext.getMessage().getInvocationProperty("myProperty");

  • ペイロードの代わりに呼び出しプロパティを返します。
  • +0

    ありがとうございました!今、私はペイロードがnullだった理由を理解しています。メッセージを割り当ててブラウザでレンダリングすることができました.- –

    0

    最初に確認するのは、Javaクラスを正しくインスタンス化することです。 Javaオブジェクトを設定するUIまたは視覚的な方法は私には分かりません。

    <spring:bean id="ordersTransform" name="OrdersTransformSingleton" class="org.dlw.transport.OrdersTransformSingleton" scope="singleton" /> 
    

    そして、Javaオブジェクトコンポーネント:

    は、最初にこれをチェックして、実行時に、あなたのクラスをインスタンス化していることを確認してください私はそうのようなSpring構成の非常に簡単な例を見つけました。次に、実装した呼び出し可能メソッドにブレークポイントを追加して、アプリケーションプログラムのポインタがメソッドにアクセスしているかどうかを確認します。その場合は、メッセージをペイロードに追加します。

    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; 
    } 
    

    ペイロードを設定してメッセージを返すことを忘れないでください。

    +0

    設定XMLでは、次のようにJavaクラスを定義しました。私はpaylodの設定後に動作します。 –

    関連する問題