何为CXF

      

       感谢作者的整理 文章转自:http://www.iteye.com/topic/83092

 

       CXF是 IONA的OpenSource ESB Celtix与 号称最快的Soap协议栈 XFire合并的 apache Incubate 项目。
CXF是一个JAX-WS API的实现。
CXF支持多种binding, transport。
CXF支持也支持除JAX-WS之外的服务模型,例如JBI,CORBA,SCA等。

好在我把CXF项目的网站的链接给同学发了过程,与此同时我也注意到了 Apache CXF: An Open Source Service FrameWork 这个标题。 我想这很概括的回答了前面那个问题CXF是做什么的。

这个 Service Framework所做的工作就在将各种应用发布为Web Services。
在发布你的应用之前你需要告诉CXF两个信息, 一个是 WSDL Contracts,一个是你服务应用的具体实现。

熟悉WSDL的朋友应该知道,WSDL提供了Web Servcies的服务描述,定义服务所提供的操作信息,以及操作支持消息数据信心。我们可以把这些信息称为是WSDL contracts。在CXF内部是通过

Service Model来描述这些WSDL Contracts的,这样做的目的有两个一个是屏蔽了WSDL1.1 与WSDL2.0之间的区别,另一个是为CXF内部运行环境提供了一个统一的服务信息描述接口。

这样以来我们可以很轻松的实行 WSDL <--> ServiceModel <--> Java Class Service Endpoint Interface(SEI)的转换。
同时CXF可以同时支持WSDL First以及 Code First两种编程模型

服务的实现可以是POJO ,也可以是使用JSR181标记过(Annoatated)的Java类实现,同时也可以是一个js文件。在CXF中通过不同的Front-End来支持这些不同的服务实现。 JAX-WS Front-End支持采用JAX-WS API创建服务。Simple Front-End 支持POJO服务实现。 JS Front-End则提供了java script服务实现的支持。

大家可以通过下面的例子来了解如何通过CXF来发布一个Web Services (注意这里采用的CXF Simple Fronte-End API来创建服务,你还可以使用JAX-WS API来创建服务)


Hello.java

 

java 代码
  1. public interface Hello {    
  2.    String sayHello();     
  3. }     
  4.   
  5.   

 

HelloImpl.java 
java 代码
  1. public class HelloImpl {   
  2.    public String sayHello() {   
  3.       return "hello";    
  4.    }   
  5. }      


server.java 

java 代码
  1. import org.apache.cxf.frontend.ServerFactoryBean;    
  2. ...       
  3. // Create our service implementation   
  4. HelloWorldImpl helloWorldImpl = new HelloWorldImpl();   
  5.  // Create our Server     
  6. ServerFactoryBean svrFactory = new ServerFactoryBean();    
  7. svrFactory.setServiceClass(Hello.class);    
  8. svrFactory.setAddress("http://localhost:8080/Hello") ;   
  9. svrFactory.setServiceBean(helloWorldImpl); svrFactory.create();      
  10.   
  11.   

在这里没有指定WSDL,CXF采用CodeFirst的服务发布方式,通过分析ServiceClass来构建ServiceModel,你可以通过http://localhost:8080/Hello?wsdl来获取具体的WSDL信息。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值