2

我有一个使用 Jersey REST 组件的 mule 流程

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

过去球衣组件的对象是“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 正在解决的问题之一: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 回答