拥有带有XML有效载荷的基于肥皂的Web服务,我如何获取JAX-WS中的XML有效载荷> 2.0客户端?
我可以看到这个问题将如何标记为重复,但请忍受。
似乎选项是:
-
使用调度API。但是,这需要我降低(ER)级别并手动创建请求有效载荷,我想避免。
-
使用JAX-WS的处理程序基础架构获取有效载荷并可能通过MessageContext属性将其传递回客户端,但这仍然会将XML降低到我想避免的Jaxb对象树中。
所以,我该如何:
- 使用SEI调用Web服务 - 从头开始创建XML请求 没有混乱
- 抓住" RAW" XML响应,而不会发生JAXB unmarshalling发生
听起来很简单,对吗?
在非目标中,jax-ws 2规范说明'可插入数据绑定JAX-WS 2.0将将数据结合到JAXB [10];这不是提供一个目标插件API允许使用其他类型的数据绑定技术代替JAXB。然而,JAX-WS 2.0将保持有选择性禁用数据绑定以提供XML的能力片段适合用作替代数据绑定技术的输入。'
因此,您应该能够访问原始有效载荷。
以下示例也在规范中:
4.3.5.5异步,回调,面向有效载荷
class MyHandler implements AsyncHandler<Source> {
...
public void handleResponse(Response<Source> res) {
Source resMsg = res.get();
// do something with the results
}
}
Source reqMsg = ...;
Service service = ...;
Dispatch<Source> disp = service.createDispatch(portName,
Source.class, PAYLOAD);
MyHandler handler = new MyHandler();
disp.invokeAsync(reqMsg, handler);
由于规范还指出,绑定具有其自己的处理链(请参阅第9章),因此您应该能够从链条中删除JAXB处理程序,以便Jaxb编组/Unmarshalling不参与。
<</p>