WebService:搭建cxf环境

来源:互联网 发布:centos 6.5 ipv6 配置 编辑:程序博客网 时间:2024/06/06 08:30

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;@WebServicepublic 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后,上图的右面的箭头在服务关闭后就不能使用了。

 


原创粉丝点击