您的位置:首页 > 其它

Adding SOAP headers in the JAX-WS

2008-09-03 15:55 501 查看
One of the additions in the JAX-WS RI 2.1 EA3 is a simple way to add SOAP headers for your request.

The official "portable" way of doing this is that you creaate a SOAPHandler
and mess with SAAJ. This works, but Vivek though it's just too much
work for such a simple thing one day, and we all agreed. So we quickly
put together a better way to do this. Here's how to do this:

When you create a proxy or dispatch object, they implement BindingProvider interface. When you use the JAX-WS RI, you can downcast to WSBindingProvider which defines a few more methods provided only by the JAX-WS RI.

This interface lets you set an arbitrary number of Header
object, each representing a SOAP header. You can implement it on your
own if you want, but most likely you'd use one of the factory methods
defined on Headers class to create one.

import com.sun.xml.ws.developer.WSBindingProvider;

HelloPort port = helloService.getHelloPort();  // or something like that...
WSBindingProvider bp = (WSBindingProvider)port;

bp.setOutboundHeader(
// simple string value as a header, like <simpleHeader>stringValue</simpleHeader>
Headers.create(new QName("simpleHeader"),"stringValue"),
// create a header from JAXB object
Headers.create(jaxbContext,myJaxbObject)
);


Once set, it will take effect on all the successive methods. If you'd like to see more factory methods on Headers, please let us know!

We are also talking about adding a switch to wsimport so that you won't have to downcast.

<转自http://weblogs.java.net/blog/kohsuke/archive/2006/11/adding_soap_hea.html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: