0

我有一个 web 服务 jax-ws,我需要得到肥皂头,我这样做:

@Resource
private WebServiceContext context;

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

但是我将 MessageContext 转换为 SoapMessageContext 时遇到问题,并且我无法制作 SoapHandler,因为我无法将对象从处理程序发送到 Web 服务,因为要发送我需要将 de 对象放在 Application Scope 上,而我不希望那样。

4

2 回答 2

4

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

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

应该做的伎俩。

于 2016-02-01T15:12:05.357 回答
0

期望收到什么标头?由于javax.xml.ws.handler.MessageContext太 a 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;
    }

}
于 2013-09-26T19:53:41.380 回答