首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Camel-cxf请求JSON到activemq

Camel-cxf请求JSON到activemq
EN

Stack Overflow用户
提问于 2016-04-28 12:41:40
回答 1查看 464关注 0票数 0

我一直试图使用camel-cxf组件将JSON请求发送到Activemq队列,以公开RESTful服务。以下是我的路线代码:

代码语言:javascript
复制
<route>
    <from uri="cxfrs:bean:rsServer" />
    <log message="${body}"/>
    <to uri="activemq:queue:testQueue" pattern="InOnly" />
</route>

其中rsServer是公开的RESTful服务。

代码语言:javascript
复制
<cxf:rsServer id="rsServer" address="/services"
        serviceClass="com.mayank.restservice.resource.RestfulResource">

    <cxf:providers>
        <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" />
        <bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider" />
    </cxf:providers>
    <cxf:extensionMappings>
        <entry key="xml" value="application/xml" />
        <entry key="json" value="application/json" />
    </cxf:extensionMappings>

</cxf:rsServer>

在调用web服务时,Activemq确实在队列中接收项,但在查看消息时:

javax.jms.JMSException:未能从内容构建主体。代理不可用的可序列化类。原因: java.lang.ClassNotFoundException: org.apache.cxf.message.MessageContentsList

会显示出来。请告诉我是什么问题,因为我是全新的骆驼。

EN

回答 1

Stack Overflow用户

发布于 2016-05-04 05:47:49

如果要向jmsMessageType=Text发送对象,则可能需要为 ActiveMQ 组件使用选项,后者扩展了jms组件。

之后,要将消息放到ActiveMQ队列中,对象需要是可序列化的,因为错误是暗示的。

在您的示例中,一旦cxfrs组件完成,exchange主体就是一个不可序列化的MessageContentsList对象。

在这里你可以做两件事:

  1. 更改一些bindingStyle等cxfrs配置,以便输出可序列化的对象。
  2. 将另一个组件添加到路由中,例如bean或ActiveMQ,以便在发送到ActiveMQ组件之前创建可序列化的对象。

有关详细信息,请参阅http://camel.apache.org/bean.htmlhttp://camel.apache.org/convertbodyto.html以及http://camel.apache.org/cxfrs.htmlhttp://camel.apache.org/jms.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36915029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档