如何在Jax WS WebService中获取Soap Header

时间:2013-09-26 12:27:28

标签: java web-services soap jax-ws

我有一个webservice jax-ws,我需要获取soap header,我这样做:

@Resource
private WebServiceContext context;

MessageContext msContext = context.getMessageContext();
SOAPMessageContext soapMsgContext = (SOAPMessageContext) msContext;
SOAPHeader soapHeader = soapMsgContext.getMessage().getSOAPHeader();
Iterator it=soapHeader.extractAllHeaderElements();

但我有问题将MessageContext转换为SoapMessageContext,我无法生成SoapHandler,因为我无法将对象从处理程序发送到webservice因为发送我需要在应用程序范围上放置de object而我不想要这一点。

2 个答案:

答案 0 :(得分:3)

不知道您正在使用哪个版本的JAX-WS。

但是

@WebMethod
public myResource(@WebParam(name = "MyHeader", header = true) String myHeader) {
...
}

应该做的伎俩。

答案 1 :(得分:0)

期望收到什么标题?由于javax.xml.ws.handler.MessageContext太过Map<String, Object>,因此您可以打印所有内容:

import java.util.Map;

import javax.annotation.Resource;
import javax.jws.WebService;
import javax.xml.ws.WebServiceContext;

@WebService
public class HelloWS {

    @Resource
    private WebServiceContext ctx;

    public String sayHello(String name) {
        Map<String, Object> map = ctx.getMessageContext();
        for (Object obj : map.entrySet()) {
            System.out.println(obj);
        }
        return "Hello, " + name;
    }

}