我有一个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而我不想要这一点。
答案 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;
}
}