接口部分使用如下代码
package ws.server;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebParam.Mode;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.ws.Holder;
import ws.bean.MyReq;
import ws.bean.MyResp;
@WebService(targetNamespace = "http://www.MyWs.com/schemas/")
public interface MyWs {
@WebMethod
@WebResult(name = "MyResp") MyResp
myMethod(
//header说明这个参数出现在标头部分,Mode.INOUT说明这个参数是输入输出都存在的(注意类型要用Holder包围)
@WebParam(name = "Tid", header = true, mode = Mode.INOUT) Holder<String> tid,
@WebParam(name = "MyReq") MyReq myReq
);
}
实现部分的代码
package ws.server.impl;
import javax.xml.ws.Holder;
import ws.bean.MyReq;
import ws.bean.MyResp;
import ws.server.MyWs;
public class MyWsImpl implements MyWs {
@Override
public MyResp myMethod(Holder<String> tid, MyReq myReq) {
//使用value获取Holder中实际类型的值
System.out.println("tid = " + tid.value);
return new MyResp();
}
}
使用soapUI工具可以看到输入
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://www.MyWs.com/schemas/">
<soapenv:Header>
<sch:Tid>2222</sch:Tid>
</soapenv:Header>
<soapenv:Body>
<sch:myMethod>
<MyReq>
<reqName>3333</reqName>
</MyReq>
</sch:myMethod>
</soapenv:Body>
</soapenv:Envelope>
以及返回的输出,都带有header部分
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<ns2:Tid xmlns:ns2="http://www.MyWs.com/schemas/">2222</ns2:Tid>
</soap:Header>
<soap:Body>
<ns2:myMethodResponse xmlns:ns2="http://www.MyWs.com/schemas/">
<MyResp>
<respName>javax.xml.ws.Holder@1733fe5d,3333</respName>
</MyResp>
</ns2:myMethodResponse>
</soap:Body>
</soap:Envelope>

1531

被折叠的 条评论
为什么被折叠?



