Mule-从Jersey组件返回的流
我有一个使用Jersey REST组件的mule流Mule-从Jersey组件返回的流,mule,Mule,我有一个使用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 !!
<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$1类型转换为字符串,您可以将其转发给下一个资源。注意:OP对该问题进行了彻底的审查(请参阅),因此该答案现在看起来已断开连接。这个答案解释了Jersey资源如何与其他流交互
要从您的资源调用其他流,您可以:
- 使用组件绑定:
- 使组件类
,然后使用MuleClient执行调用MuleContextAware
这是APIkit正在解决的问题之一:创建了以下转换器。它将Jersey的响应转换为字符串
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;
}
}大卫。。。我看到日志声明之后,我相信消息正在过去。但是,该消息的类型为“org.mule.module.jersey.mulereponsewriter”。INFO 2013-10-11 15:03:51308[[通知].connector.http.mule.default.receiver.02]org.mule.api.processor.LoggerMessageProcessor:Message$$$$$org.mule.module.jersey.MuleResponseWriter$1@6c1e42acOh总之,很有趣,不要弄乱消息负载,因为它是准备返回给调用方的资源响应。弄乱消息负载也是Mule文档中显示的内容:)并且它最终会出现转换异常,因为它期望负载中包含OutputHandler的消息,关于如何在流程中进一步使用来自jersey rest服务的响应,有什么建议吗?
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;
}