1.CXF是基于JAX-WS实现的,JAX-WS规范是一组XML web services的JAVA API,它使用户无需编写复杂的SOAP ENV,WSDL。在?JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP。在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码。JAX-WS的运行时实现会将这些API的调用转换成为对于SOAP消息。
在服务器端,用户只需要通过Java语言定义远程调用所需要实现的接口SEI (service endpoint interface),并提供相关的实现,通过调用JAX-WS的服务发布接口就可以将其发布为WebService接口。?
在客户端,用户可以通过JAX-WS的API创建一个代理(用本地对象来替代远程的服务)来实现对于远程服务器端的调用。
2.使用CXF开发Webservice工程步骤:?
1).为CXF设置编译和开发环境?
在http://cxf.apache.org/download.html?下载相应的CXF包,/lib目录下的jar?文件引入工程?
2).创建基于XCF的Webservice服务端工程。
3).编写Webservice的客户端程序,调用服务端服务。
3.CXF中的Factory:
CXF不但可以使用JAX-WS开发web服务,也可以将POJO发布为web服务,对于这两种不同的方式,对应的factory如下:
?????????????????????????????????服务端???????????????????????????????客户端??
JAX-WS??????????????????????JaxWsServerFactoryBean?????????????JaxWsProxyFactoryBean
POJO???????????????????????????ServiceFactoryBean?????????????????????ClientProxyFactoryBean
4.CXF使用JAX-WS开发服务端:
(1).定义服务接口:
在接口上添加Webservice注解:@WebService。如:
- package?service;??
- import?javax.jws.WebService;??
- @WebService??
-
public?interface?OrderProcess?{??
- ????String?processOrder(Order?order);??
- }??
?
(2).实现服务接口:
在实现类上也添加Webservice注解:@WebService(endpointInterface =?服务接口全路径,???serviceName =?对外发布的服务名)。如:
[java]?
import?javax.jws.WebService;??
@WebService(endpointInterface?=?"service.OrderProcess",serviceName=”order”)??
class?OrderProcessImpl?implements?OrderProcess?{??
????public?String?processOrder(Order?order)?{??
????????return?"hello?world"+order;??
????}??
}??
?
(3).对外发布服务:
[java]?
//创建web服务工厂??
JaxWsServerFactoryBean?factory?=?new?JaxWsServerFactoryBean();??
//设置服务类??
factory.setServiceClass(服务接口实现类.class);??
//设置对外发布服务地址??
factory.setAddress(对外发布的服务地址);??
//创建服务??
Server?server?=?factory.create();??
//启动服务??
server.start();??
?
5.CXF使用JAX-WS开发客户端:
[java]?
//创建web服务代理工厂??
JaxWsProxyFactoryBean?factory?=?new?JaxWsProxyFactoryBean();??
//设置要调用的web服务服务端发布地址??
factory.setAddress(web服务的发布地址);??
//设置要调用的web服务??
factory.setServiceClass(web服务接口.//创建web服务对象??
服务接口?对象?=?(服务接口)?factory.create();??
通过对象调用web服务的方法??
6.CXF使用POJO开发服务端:??
和使用JAX-WS开发方式前两步完全一样,第三步稍有不同如下:??
//创建web服务工厂??
ServiceFactoryBean?svrFactory?=?new?ServiceFactoryBean();??
//设置服务类??
svrFactory.setServiceClass(服务接口实现类.class);??
//设置对外发布服务地址??
svrFactory.setAddress(对外发布的服务地址);??
//创建服务??
Server?server?=?svrFactory.create();??
//启动服务??
server.start();??
?
6.CXF使用POJO开发客户端:
和JAX-WS方式除了代理工厂不同以外,其他均相同:
[java]?
//创建web服务代理工厂??
ClientProxyFactoryBean?factory?=?new?ClientProxyFactoryBean();??
//创建web服务对象??
服务接口?对象?=?(服务接口)?factory.create();??
?
通过对象调用web服务的方法
7.CXF与Spring的集成:
(1).对工程引入spring支持。
(2).在web.xml文件中添加spring和CXF相应的配置如下:
[xhtml]?
<web-app>??
??context-param>??
??param-name>contextConfigLocation</>??
??param-value>spring配置文件路径>??
?>??
?listener>??
??listener-class>??
???org.springframework.web.context.ContextLoaderListener??
??>??
?servlet>??
??servlet-name>CXFServlet>??
??display-name>CXF?Servlet>??
??servlet-class>??
???org.apache.cxf.transport.servlet.CXFServlet??
??load-on-startup>1>??
?servlet-mappingurl-pattern>/service/*>??
>??
?
(3).在spring配置文件中导入CXF的相关配置如下:
[xhtml]?
import?resource="classpath:META-INF/cxf/cxf.xml"?/>??
import?resource="classpath:META-INF/cxf/cxf-extension-soap.xml"?/>??
import?resource="classpath:META-INF/cxf/cxf-servlet.xml"?/>??
?
(4).在spring配置文件中配置要发布的web服务如下:
[xhtml]?
jaxws:endpoint??
???id="……"??
???implementor="服务接口实现类全路径"??
???address="/web服务发布地址(相对地址)"?/>??
?
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!