WebService实战(一)——实现第一个CXF
? ?? ? ? 一、配置环境 ? ? 1.下载CXF的api,并解压到本地 ? ? 2.添加环境变量:CXF_HOME ? ? 3.Path变量末尾:%CXF_HOME%bin; ? ? 4.ClassPath变量末尾添加:%CXF_HOME%libcxf-manifest.jar; ? ?? ? ? 二、创建服务端 ? ? 1.建立java项目。 ? ? 2.引入cxf依赖包。 ? ?? ? ? 3.创建服务类
package com.tgb.cxf.server; import javax.jws.WebService; import javax.xml.ws.BindingType; @WebService //使用SOAP2协议 @BindingType(value=javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING) public class HelloService { public String sayHello(String name){ return "hello" +name; } } ? ? 4.发布服务 ? ?? ? ? ? ? ?用两个不同的类发布应用: ? ? ServerFactoryBean(不需要使用@webservice)生成的文档不规范,不建议使用 ? ? JaxWsServerFactoryBean(建议使用此类,需要使用@webservice)生成的文档不规范,可以发SOAP1.1,SOAP1.2的协议,当cxf的服务类中没有方法时也可以发布成功,不报错。如果使用SOAP1.2需要用@BindType注解;使用SOAP1.2时wsimport命令失效,需要使用cxf的wsdl2java ? ? 建议:发布服务的时候使用SOAP1.2,客户端调用的时候使用SOAP1.1
package com.tgb.cxf.server; import org.apache.cxf.frontend.ServerFactoryBean; import org.apache.cxf.interceptor.LoggingInInterceptor; import org.apache.cxf.interceptor.LoggingOutInterceptor; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; public class MyCXFServer { public static void main(String[] args) { //1.创建服务工厂对象 //ServerFactoryBean sfBean = new ServerFactoryBean(); JaxWsServerFactoryBean sfBean = new JaxWsServerFactoryBean(); //加入输入输出拦截器 sfBean.getInInterceptors().add(new LoggingInInterceptor()); sfBean.getOutInterceptors().add(new LoggingOutInterceptor()); //2.指定服务地址 sfBean.setAddress("http://127.0.0.1:5550/hello"); //3.设置服务类 sfBean.setServiceClass(HelloService.class); //4.设置服务类的实例对象 sfBean.setServiceBean(new HelloService()); //5.发布服务 sfBean.create(); System.out.println("server ready..."); } } ? ? 发布服务后,在浏览器输入地址:http://127.0.0.1:5550/hello?wsdl,可以看到发布的wsdl文档。 ? ? 三、生成代码 ? ? 使用wsdl2java命令生成java文件 ? ?? ? ?? ? ? 四、创建客户端 ? ? 1.新建java项目 ? ? 将新生成的代码拷到客户端文件中。 ? ? 2.调用服务? ??
package com.tgb.cxf.client; import com.tgb.cxf.server.HelloService; import com.tgb.cxf.server.HelloServiceService; public class Soap12Client { public static void main(String[] args) { HelloServiceService hsService = new HelloServiceService(); HelloService hs = hsService.getHelloServicePort(); String result = hs.sayHello("jiangxiao"); System.out.println(result); } } ? ? 运行代码: ? ?? ? ? 说明调用成功! ? ? 总结: ? ? webservice和我们当初学习过的wcf机制是差不多的,只有我们只要知道远程访问的类的地址和接口,就可以顺利调用到远程类的方法。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |