0

Web サービス jax-ws が 1 つあり、soap ヘッダーを取得する必要があるため、次のようにします。

@Resource
private WebServiceContext context;

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

しかし、私は MessageContext を SoapMessageContext にキャストするのに問題があり、オブジェクトをハンドラーから Web サービスに送信できないため、SoapHandler を作成できません。

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は すぎるため、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 に答える