cxf 介绍 以及ant 工具的使用
ant 工具:1、为什么要用到ant这个工具呢?Ant做为一种工具已经广泛被使用,并且历史悠久。
使用ant的内置命令,可以编译java源文件(javac),运行java文件(java),给class文件打包(jar、war、ear),
也可以创建(mkdir)、删除(del)、拷贝(copy),甚至可以使用ant执行sql文件。
由于ant是用xml语言写成的文件,并取默认名为build.xml文件。
所以,今后大家应该在见到名为build.xml文件时知道这是一个ant的文件。
ant 工具后面跟的是任务的名称
ant server 运行了Server类,发布了一个webservice
ant client 调用已经发布的webservice
ant clean 清除已经生成的class 文件
ant war 将java 项目打成一个war 包
ant deploy -Dtomcat=true 把打成的war 拷贝到tomcat 的webapp 下面去。
ant undeploy -Dtomcat=true; 卸载tomcat 下面的项目..
cxf总结
服务端:
用cxf 框架提供的类发布一个服务
使用cxf 提供 ServerFactoryBean 来发布webservice
被发布的类当中可以不需要标注webservice 注解,类当中可以不包含有效的方法,
如果没有包含有效的方法.它会提供一个空的服务.
//创建发布服务的类...
ServerFactoryBean bean=new ServerFactoryBean();
bean.setAddress("http://192.168.9.100:8080/server");//服务对外的访问地址
bean.setServiceClass(CxfWebService.class);//设置服务类的接口类型,如果没有接口则为当前类..
bean.setServiceBean(new CxfWebService());//设置服务类的实现
bean.create();//发布服务
第二种发布方式:
------------------------------------------------------------------------------------------
使用cxf 框架提供的类 jaxWsServerFactoryBean 发布webService
jaxWsServerFactoryBean 是 ServerFactoryBean 的子类...
jaxWsServerFactoryBean bean=new jaxWsServerFactoryBean();
bean.setAddress("http://192.168.9.100:8080/server");//服务对外的访问地址
bean.setServiceClass(CxfWebService.class);//设置服务类的接口类型,如果没有接口则为当前类..
bean.setServiceBean(new CxfWebService());//设置服务类的实现
bean.create();//发布服务
-------------------------------------------------------------------------------------------
客户端:
用cxf 框架提供的类调用服务.. (需要依赖一个接口,通过wsimport 生成的代码当中获取...)
//创建调用webservice 服务的类...
ClientProxyFactoryBean bean=new ClientProxyFactoryBean();
bean.setAddress("http://192.168.9.100:8080/server");//设置访问地址...
bean.setServiceClass(CxfWebServicePortType.class);//设置服务的接口...
//创建接口类型...
CxfWebServicePortType cxfWebServicePortType=(CxfWebServicePortType) bean.create();
cxfWebServicePortType.sayHello();
----------------------------------------------------------------------------------
使用cxf 提供类 JaxWsProxyFactoryBean 来调用 webservice 的服务端.......
JaxWsProxyFactoryBean 是 ClientProxyFactoryBean 的子类...
//创建调用服务的类...
JaxWsProxyFactoryBean bean=new JaxWsProxyFactoryBean();
//设置访问地址
bean.setAddress("http://192.168.9.100:7418/userService");
//设置接口类型...
bean.setServiceClass(UserService.class);
UserService us=(UserService) bean.create();
String data=us.getUserById(1);
System.out.println(data);
---------------------------------------------
调用原则: 总结......
服务端: 客户端
ServerFactoryBean ------------ClientProxyFactoryBean
JaxWsServerFactoryBean----------------JaxWsProxyFactoryBean
JaxWsServerFactoryBean 可以发布soap1.2 版本的协议....发布服务的时候,
我们最好被发布的服务类要面向接口编程..
命令:wsdl2java
wsdl2java 是cxf 框架给我们提供的命令,这个命令的作用与wsimport 类似...
拦截器:
cxf 框架中提供了拦截器的机制,我们可以通过拦截器获取到客户端与服务端进行交互的时候的数据格式
//创建发布服务的 类...
JaxWsServerFactoryBean bean=new JaxWsServerFactoryBean();
//设置对外的访问地址
bean.setAddress("http://192.168.9.100:7418/userService");
bean.setServiceClass(UserService.class);//设置接口类型...
bean.setServiceBean(new UserServiceImpl());//设置接口的实现类...
//我们可以在发布服务的时候添加消息拦截器
//拦截客户端往服务端 发送的请求的消息
bean.getInInterceptors().add(new LoggingInInterceptor());
//拦截服务端往客户端返回的消息...
bean.getOutInterceptors().add(new LoggingOutInterceptor());
bean.create();