//调用Endpoint的publish方法发布Web Service
EndpointImpl ep =EndPoint.publish("http://10.1.14.6");
//添加In拦截器
ep.getInInterceptors().add(e);
//添加Out拦截器
ep.getOutInterceptors().add(e);
HelloWorldWs factory =newHelloWorldWs();
//此处返回的是远程WebService的代理
HelloWorld hw = factory.getHelloWorldPort();
Client client =ClientProxy.getClient(hw);
client.getInInterceptors().add(e);
client.getOutInterceptors().add(e);
// 服务器添加校验Header拦截器
//通过PhaseInterceport,可以指定拦截器在哪个阶段起作用
publicclassAuthInterceptorextendsAbstractPhaseInterceptor<SoapMessage>{
publicAuthInterceptor(){
//该拦截器会在“调用之前”拦截;Phase是阶段常量
super(Phase.PRE_INVOKE);
}
//实现自己的拦截器时,需要实现handleMessage方法
//handleMessage方法中的形参就是被拦截到的SOAP消息
//一旦程序获取到SOAP消息,就可以解析或修改SOAP消息
@Override
publicvoid handleMessage(SoapMessage msg)throwFault{
//得到SOAP消息的所有Header
List<Header> headers = msg.getHeaders();
}
}
//客户端添加Header消息拦截器
publicclassAddHeaderInterceptorextendsAbstractPhaseInterceptor<SoapMessage>{
privateString userId;
privateString userPass;
publicAddHeaderInterceptor(String userId,String userPass){
super(Phase.PREPAR_SEND);//准备发送时调用
this.userId = userId;
this.userPass = userPass;
}
@Override
publicvoid handleMessage(SoapMessage msg)throwsFault{
List<Header> headers = msg.getHeaders();
//把ele元素包装成Header,并添加到SOAP消息的Header列表
headers.add(newHeader(newQName("fkjava"),ele));
}
}
新闻热点
疑难解答