CXF的三种发布方式和客户端调用方法
先定义一个web service
@WebService(targetNamespace="http://www.itfad.net/queryUser") public interface IQueryUser { String query(@WebParam(name = "user") UserInfo user); }
实现类:
@WebService(endpointInterface="net.itfad.services.IQueryUser") public class QueryUserImpl implements IQueryUser { public String query(UserInfo user) { if (user == null) throw new IllegalArgumentException("参数user不能为null"); return "your name is " + user.getUserName(); } }
web service发布方式
第一种,使用jax-ws方式,非常简单
String url="http://localhost:8080/queryUser;
Endpoint.publish(url, new QueryUserImpl);
第二种,CXF方式
String url="http://localhost:8080/queryUser"; JaxWsServerFactoryBean factoryBean=new JaxWsServerFactoryBean(); factoryBean.setAddress(url); factoryBean.setServiceClass(IQueryUser.class); factoryBean.setServiceBean(new QueryUserImpl()); factoryBean.create()
第三种,CXF Simple FrontEnd方式
该方式无需在类中指定相关协议,也就是说不需要在类中指定相关webservice注解,一个普通类就行
ServerFactoryBean svrFactory = new ServerFactoryBean(); //设置服务接口类 svrFactory.setServiceClass(IQueryUser.class); svrFactory.setAddress("http://localhost:8080/queryUser"); //设置服务实现接口类 svrFactory.setServiceBean(QueryUserImpl); svrFactory.create();
客户端调用web service方法
首先要使用cxf的wsdl2java命令工具生成服务代理类,如:wsdl2java -p com.charles.client http://localhost:8080/queryUser?wsdl
具体命令格式可使用wsdl2java /?查看。生成后的代理类名是:服务实现类名+Service
方法一:使用标准的JAX-WS的API完成客户端调用
//注意。此处http:http://www.itfad.net/queryUser是服务的命名空间,可查看wsdl文件中的targetNamespace
QName qName = new QName("http://www.itfad.net/queryUser","QueryUserImplService");
QueryUserImplService ImplService =new QueryUserImplService(new URL("http://localhost:8080/CXFDemo/queryUser?wsdl"),qName);
IQueryUser service=(IQueryUser)ImplService.getPort(IQueryUser.class);
方法二:javax.xml.ws.Service
String endPointAddress = "http://localhost:8080/queryUser";//服务实际地址
//此处http://charles.com/为命名空间,默认是包名的倒序。IQueryUserService=服务接口名+service
javax.xml.ws.Service service = javax.xml.ws.Service.create(new QName("http://charles.com/","IQueryUserService"));
//IQueryUserPort=服务接口名+Port
service.addPort(new QName("http://charles.com/","IQueryUserPort"),javax.xml.ws.soap.SOAPBinding.SOAP11HTTP_BINDING, endPointAddress);
IQueryUser queryService1 =service.getPort(IQueryUser.class);
System.out.println(queryService1.query(user));
这里其实利用wsdl2java工具为我们生成类时已经包含了这种方法。比如我们的服务接口是IQueryUser,那么我们会发现生成的文件下有个IQueryUserService类
该类正是继承至javax.xml.ws.Service,并封装以上代码的功能,调用代码如下:
IQueryUserService queryUserService=new IQueryUserService();//默认构造函数里使用默认wsdl地址和服务的QName
IQueryUser queryService1 =queryUserService.getIQueryUserPort();//方法内部调用了super.getPort(IQueryUserPort, IQueryUser.class);
System.out.println(queryService1.query(user));
方法三:使用CXF中JaxWsProxyFactoryBean客户端代理工厂调用web服务
JaxWsProxyFactoryBean soapFactoryBean = newJaxWsProxyFactoryBean();
soapFactoryBean.setAddress("http://localhost:8080/queryUser");
soapFactoryBean.setServiceClass(IQueryUser.class);
Object o = soapFactoryBean.create();
IQueryUser service = (IQueryUser)o;
方法四:使用CXF的JaxWsDynamicClientFactory动态代理工厂
JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf.createClient("people.wsdl", classLoader);
Object person =Thread.currentThread().getContextClassLoader().loadClass("com.acme.Person").newInstance();
Method m = person.getClass().getMethod("setName", String.class);
m.invoke(person, "Joe Schmoe");
client.invoke("addPerson", person);
相关推荐
springboot整合CXF发布webservice和客户端调用 项目中每个类都有详细的注释,保证都能看懂,不失为一个学习springboot整合cxf来学习webservice发布调用的好例子
Springboot整合CXF发布Web service和客户端调用(用户和密码验证)打开及用
cxf客户端调用axis服务端流程
1.使用Java 2.用cxf开发webservice ...客户端也需要接口类文件和pojo,和cxf客户端xml 但是没有接口的实现类,就是为了去服务端来调用的。 具体有不懂可以问我 给我发消息, 劳烦评价 ,请大家支持原创 禁止转载
用CXF作为客户端调用webService的demo:本人亲测可用,eclipse工程项目包含完整代码和完整jar包, 只要用eclipse导入项目即可,运行控制台显示success或者false字符串,说明OK。
CXF 开发手册, 包括下载,配置,客户端调用远程服务以及发布自己的接口为服务,供别人调用的全过程
CXF客户端调用例子,本例子开发语言为JAVA,包内包含服务端跟客户端
cxf客户端调用axis服务端流程.docxcxf客户端调用axis服务端流程.docx
Java 调用webservice cxf客户端调用demo和服务端,包含jar包,服务端发布后直接用客户端调用
cxf_axis_xfire客户端调用的几种方法[收集].pdf
cxf_axis_xfire客户端调用的几种方法.docx
webservice的cxf框架客户端调用所需jar包,不要删除里面的jar包,直接放在lib下。亲测可用。
cxf客户端调用webservice所需jar包
使用idea创建maven项目组建spring+cxf 客户端使用idea创建java Enterprise 中的WebServices Client进行创建
CXF实例源代码 客户端调用 web service 入门教程
个人经验总结性文档,都是成功的经验,绝对超值
这个代码例子是为了调用CXF提供的WS服务,所以先要下载“CXF和Spring结合的例子”,并将服务器(tomcat)运行起来,在利用本客户端测试,本客户端是根据服务端发布的WSDL文件,用wsdl2java直接生成java代码,加入到...
CXF与web项目服务端整合的例子以及客户端调用详细说明
cxf实现webservice发布,demo中详细介绍cxf发布方式,及客户端调用方法。
本实例是通过客户端通过WebService,调用数据库端方法的实例。 例子中包含cxf的jar包,在调用服务器端方法时,首先要在cmd中,通过wsdl生成服务器端的接口、接口实现类等相关的javal类。 cmd WSDL2JAVA ...