我正在使用 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 参数,它可以是以下任何一种:
在目标服务器上调用的方法。协议(protocol)和逻辑
支持 JAX-WS 处理程序。
soap:body) 在 CXF 端点中的消息配置之后是
应用。仅支持协议(protocol) JAX-WS 处理程序。逻辑 JAX-WS
不支持处理程序。
传输层。不应触摸或更改 Stream,其中一些
如果您使用这种类型的 CXF 拦截器将被删除
数据格式,因此您在 camel-cxf 之后看不到任何肥皂标题
不支持使用者和 JAX-WS 处理程序。
通过将消息从
将传输层转换为原始 SOAP 消息
默认是 POJO,这意味着没有 XML 被作为消息传递 Camel 正在传递对象。我怀疑您可能正试图将响应作为 XML 来操作,这会导致问题。
不久前,当我收到 POJO 时,我试图通过对 XML 执行 XPATH 查询来将 POJO 转换为 XML,我遇到了类似的情况。
关于web-services - 在 jboss fuse 中使用 cxf 的 Web 服务端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23649205/