步骤: 这里用到的就是cxf框架。
webservice首先说是一种对外的服务,是用来给外界提供数据交换接口的服务,这样说来就是有服务端的服务接口,还要有一个客户端去调用服务端接口的方法,这样就是一个wb服务和 调用的完整组合。
如果要用cxf肯定是要用到这个框架那么引入相应的 jar包是第一步;
下面就是服务器端的服务配置方法
:对于对外发布的接口:
package wb.ws.interface
@WebService(targetNamespace = "http://apache.org/")
public interface IWebService {
@WebMethod
public String testMethod(@WebParam(name = "strParams", targetNamespace = "http://apache.org/") String strParams);
}
然后加一个实现类
@WebService(targetNamespace = "http://apache.org/", endpointInterface = "wb.ws.interface.IWebService")
public class WebServiceImpl implements IWebService {
@Override
@WebMethod
public String testMethod(String strParams) {
……
}
}
这就是服务器端用到的东西,其余的代码就是一些需求的业务逻辑,这里只说cxf的接口的制作方法,运行在server上就行了这时就可以通过地址访问接口了。
下面是制作客户端的接口
@WebService(targetNamespace="http://tempuri.org/")
public interface IWebService {
public @WebResult(name = "GetSourceMethodResult", targetNamespace = "http://tempuri.org/")
String GetSourceMethod(@WebParam(name = "strXmlPara", targetNamespace = "http://tempuri.org/") String strParams);
}
GetSourceMethod就是那个客户端用来掉数据的方法,
那么这里的IWebService是怎么获取的呢 ? 是用工厂创建出来的,这个创建也就是用到了服务的地址
如下:
private static Object CreateServiceInstance(String path, AbstractSoapInterceptor interceptor) {
//创建工厂
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(IWebService.class);
//设置执行地址
factory.setAddress(path);
factory.getOutInterceptors().add(interceptor);
//创建对象
Object obj = factory.create();
return obj;
}
这样一个webservice也就完成了 ,其中包括服务端的服务和客户端的调用。