2

Jersey RESTコンポーネントを使用するミュールフローがあります

    <flow name="rest-api" doc:name="rest-api">
    <http:inbound-endpoint exchange-pattern="request-response"
        host="localhost" path="rest" port="8081" doc:name="HTTP" />
    <logger message="Message !!!!!!!! #[payload]" level="INFO"
        doc:name="Logger" />
    <jersey:resources doc:name="REST"> 
        <component class="com.test.api.TestAPI" />
    </jersey:resources>
    <logger message="Message $$$$$$$ #[payload]"  level="INFO" doc:name="Logger" />

</flow>

jersey コンポーネントを過ぎたオブジェクトのタイプは「org.mule.module.jersey.MuleResponseWriter」です。

このペイロードを処理する方法は? 呼び出し元に戻る前に、メッセージを使用し、メッセージに対して何らかの作業を行う必要があります。

更新(以下)

参照: http://www.mulesoft.org/documentation/display/current/Jersey+Module+Reference

他のフローへのジャージー応答の送信

ジャージーコンポーネントから次のリソース/フローにリクエストを変換または送信する場合は、使用する必要があります

ContainerResponse cr = (ContainerResponse) message.getInvocationProperty("jersey_response");
String messageString = (String) cr.getResponse().getEntity();
message.setPayload(messageString); 

これにより、org.mule.module.jersey.MuleResponseWriter$1 タイプが String に変換され、次のリソースに転送できます。

4

2 に答える 2

5

注:OPによって質問が大幅にレビューされたため(履歴を参照)、この回答は切断されているように見えます。この回答は、Jersey リソースが他のフローとどのようにやり取りできるかを説明しています。

リソースから他のフローを呼び出すには、次のいずれかを実行できます。

これは、APIkit が解決している問題の 1 つです: http://www.mulesoft.org/documentation/display/current/APIkit

于 2013-10-11T19:44:33.147 に答える
1

次のトランスフォーマーを作成しました。ジャージーのレスポンスを文字列に変換します

public class JerseyResponseTransformer extends AbstractMessageTransformer { 
public static Logger logger = Logger.getLogger(JerseyResponseTransformer.class);

@Override
public Object transformMessage(MuleMessage message, String outputEncoding)
        throws TransformerException {
    logger.debug("Transfroming Jersey Response to String");
    ContainerResponse cr = (ContainerResponse) message.getInvocationProperty("jersey_response");
    String messageString = (String) cr.getResponse().getEntity();
    message.setPayload(messageString); 
    return message; 
} 

}

于 2013-10-11T20:40:54.063 に答える