首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JaxWS WebService上获取SoapHeader

如何在JaxWS WebService上获取SoapHeader
EN

Stack Overflow用户
提问于 2013-09-26 20:27:28
回答 2查看 10.2K关注 0票数 0

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

代码语言:javascript
复制
@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,因为要发送对象,我需要将对象放在应用程序范围内,而我不希望这样。

EN

回答 2

Stack Overflow用户

发布于 2016-02-01 23:12:05

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

代码语言:javascript
复制
@WebMethod
public myResource(@WebParam(name = "MyHeader", header = true) String myHeader) {
...
}

应该能行得通。

票数 4
EN

Stack Overflow用户

发布于 2013-09-27 03:53:41

期望接收的报头是什么?由于javax.xml.ws.handler.MessageContext也是一个Map<String, Object>,所以您可以打印所有内容:

代码语言:javascript
复制
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;
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19028262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档