WebService:搭建cxf环境
1,Apache CXF = Celtix + Xfire OSGi(框架):动态项目调用,可以实现不同项目之间的访问。 2,CXF优势: (1),RESTful(Representation StateTransfer),静态地址参数转换。 我们通过HTTP提交用户名和密码的时候,地址栏输入的格式是: http://localhost:8080/hello?name=xzm&password=xzm RESTful把这个格式修改了。比如改成:http://localhost:8080/hello/xzm/xzm 地址参数转换了,更加安全。 (2),CORBA(Common Object Request BrokerArchitecture)公共对象请求代理体系结构,早期语言使用ws。C,C++,C#。 (3),可以与Spring进行快速无缝的整合。 (4),灵活的部署,可以运行在tomcat,Jboss,Jetty,IBMWebSphera,BeaWebLogic上面。 3,STS软件 SpringSource tool suite 是spring自己做的项目,类似于Eclipse和Myeclipse。 ? 4,CXF (1)在如下路径找到可以使用Ant解析的build.xml文件。 (2)CXF的体系结构 Bus:总线。决定了速度的快慢。 Frontend: Messaging and Interceptors:消息和拦截器 Service Model:服务模型 Data bindings:数据绑定 Protocol bindings:协议绑定(soap1.1和soap1.2) Transport: ? 我们要关注的是Bus和Frontend。 ? (3)CXF的一个额外jar文件 圈出的两个jar,是apache提供的,用来代替URLConnection的。 解压2.4版本的CXF,解压后的etc文件夹中是配置文件,其中,web.xml文件提供了在WEB应用下使用CXF的配置规范。 在cxf的解压目录中,bin是可执行文件,常用的是wsdl2java。将wsdl转换为java文件。 安装ant,命令行进入到build.xml所在目录,执行ant命令,就会解析build.xml文件。 生成cxf的文件。 ? (4)在MyEclipse中开发cxf工程。 首先建立一个java工程, 导入需要的jar包: 新建一个类,比如HelloWorld。 通过cxf启动ws服务。 import javax.jws.WebService; import javax.xml.ws.Endpoint; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; @WebService public class HelloWorld { public void sayHello() { System.out.println("hello cxf!!!"); } public static void main(String[] args) throws InterruptedException { /*原始发布形式 Endpoint end = Endpoint.publish("http://192.168.0.104:8989/hello",new HelloWorld()); Thread.sleep(3000); end.stop(); */ /** * 这里为什么使用set方式设置呢,因为cxf要与spring整合,spring的设值注入都是通过set方法注入的。 */ //cxf发布形式 JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean(); //设置地址 factoryBean.setAddress("http://192.168.0.104:8989/hello"); //设置具体类 factoryBean.setServiceBean(new HelloWorld()); //启动 factoryBean.create(); } } 运行,到浏览器中访问http://192.168.0.104/hello?wsdl,可获取生成的wsdl文档。 注意,此处生成的wsdl与之前通过endpoint生成的wsdl文档是不同的。 此外,通过cxf发布的没有地址,通过endpoint发布的有地址。比较下图。 其实通过cxf发布的是将地址中的描述集成到了一个页面,即左边的页面。 ? 将获取的wsdl页面右键另存为,保存为hello.wsdl文件,复制到项目的src中。 可以显示拥有的方法。 通过cxf发布的,生成wsdl后,上图的右面的箭头在服务关闭后继续可以使用;通过endpoint发布的,生成wsdl后,上图的右面的箭头在服务关闭后就不能使用了。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |