web-services - 在 jboss fuse 中使用 cxf 的 Web 服务端点

标签 web-services jaxb cxf apache-camel jbossfuse

我正在使用 jboss fuse 6.1-final:

这是我的简单路线:

<route>
    <from uri="cxf:bean:synchronousEndpoint"/>
    <log message="Service invoked." />
    <process ref="simpleProcessor"/>
</route>

simpleProcessor我将正确的响应(即相应的 JAXB 对象)放到上下文中。但是,它响应错误:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
       <soap:Fault>
           <faultcode>soap:Server</faultcode>
           <faultstring>Marshalling Error: java.lang.Object cannot be cast to org.w3c.dom.Element</faultstring>
       </soap:Fault>
   </soap:Body>
</soap:Envelope>

这是堆栈跟踪:
Caused by: java.lang.ClassCastException: java.lang.Object cannot be cast to org.w3c.dom.Element

有什么提示或建议吗?

最佳答案

如果没有看到来自 simpleProcessor 的更多代码,很难说。但是,您似乎使用了错误的 dataFormat 参数。

cxf 组件有一个 dataFormat 参数,它可以是以下任何一种:

  • POJO :POJO(普通旧 Java 对象)是
    在目标服务器上调用的方法。协议(protocol)和逻辑
    支持 JAX-WS 处理程序。
  • 有效载荷 : PAYLOAD 是消息负载(
    soap:body) 在 CXF 端点中的消息配置之后是
    应用。仅支持协议(protocol) JAX-WS 处理程序。逻辑 JAX-WS
    不支持处理程序。
  • 留言 : MESSAGE 是从
    传输层。不应触摸或更改 Stream,其中一些
    如果您使用这种类型的 CXF 拦截器将被删除
    数据格式,因此您在 camel-cxf 之后看不到任何肥皂标题
    不支持使用者和 JAX-WS 处理程序。
  • CXF_MESSAGE : Camel 2.8.2 中的新功能,CXF_MESSAGE 允许调用
    通过将消息从
    将传输层转换为原始 SOAP 消息

  • 默认是 POJO,这意味着没有 XML 被作为消息传递 Camel 正在传递对象。我怀疑您可能正试图将响应作为 XML 来操作,这会导致问题。

    不久前,当我收到 POJO 时,我试图通过对 XML 执行 XPATH 查询来将 POJO 转换为 XML,我遇到了类似的情况。

    关于web-services - 在 jboss fuse 中使用 cxf 的 Web 服务端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23649205/

    相关文章:

    java - 是否可以使用多个 cxf.xml 文件来配置系统的不同部分?

    rest - 是否可以使用 MTOM 响应 CXF RESTful Web 服务

    json - MOXy 无法使用 application/json 正确编码 UTF-8 字符

    java - 用于测试大型文档映射的 Jaxb 策略

    java - JAXB 将空字符串全局编码为空

    web-services - 如何查找给定半径内的最近城市?

    java - RESTful Web 服务生命周期“总是”每个请求?

    web-services - 使用 CXF 通过 SSL 保护 Web 服务通信

    asp.net - Web 服务开发从哪里开始?