`
jnn
  • 浏览: 283529 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

前几天碰见同学问我在忙什么, 我说我在做开源软件CXF。随后的问题就是CXF能做什么?  我简单想了一下,要回答好这个问题还不太容易,因为一下子好多答案都浮现在我的脑海里。
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信息。

在后续的篇幅中我将向大家介绍Service-Modle的相关知识。
分享到:
评论
7 楼 jnn 2007-08-07  
interpb 写道
jnn 我知道cxf实现了异步调用的webservice   能不能谈谈这个 demo里面的那个例子 不好运行
<br/>
<br/>
有关异步调用,请参见 samples\hello_world_async 中的例子。<br/>
<br/>
这个demo只是一个简单示例,并不是一套完整的代码, 在CXF2.0 kit 中的samples目录下有很多示例内容,这些例子都经过测试了的,你应该直接就可以运行。<br/>
<br/>
BTW:<br/>
<br/>
如果Vote顺利的话,CXF 2.0.1 最近就应该发布了,其中修正了一些用户从Xfire迁移到CXF2.0中发现的一些bug。有兴趣的朋友可以下载试用。
6 楼 jnn 2007-08-07  
溪流汇海 写道
想知道jetty(web服务器)也糅在一起,如何能脱离jetty
<br/>
<br/>
Jetty是在stand alone模式下才会启动的,如果你想使用Web Container来运行CXF, 你需要进行<a href='http://cwiki.apache.org/CXF20DOC/writing-a-service-with-spring.html'>如下的配置</a>:<br/>
5 楼 jnn 2007-08-07  
溪流汇海 写道
好象有错误,不能成功
<br/>
可否把相信错误信息贴出来, 这样好定位错误.
4 楼 interpb 2007-08-03  
jnn 我知道cxf实现了异步调用的webservice


能不能谈谈这个 demo里面的那个例子 不好运行
3 楼 溪流汇海 2007-07-30  
我的搞了后为什么没有Hello.wsdl,用http://localhost/cxf/services显示为HelloPort,一点击却没有wsdl
2 楼 溪流汇海 2007-07-30  
想知道jetty(web服务器)也糅在一起,如何能脱离jetty
1 楼 溪流汇海 2007-07-30  
好象有错误,不能成功

相关推荐

    spring与cxf整合开发

    服务器端被调用的类上要加注解@WebService,否则访问http://localhost:8080/cxf_spring_service/mm/cxf?wsdl时看不到方法和参数 2.在cmd中输入wsdl2java http://localhost:8080/cxf_spring_service/mm/cxf?wsdl报...

    cxf-3.1.5 和 cxf-3.3.13 JAVA7和JAVA8对应CXF资源

    JAVA7和JAVA8对应CXF资源 WebService CXF 用了一天时间找,官网打不开,国内要积分,下下来又永不了。最后终于搞到手,上传上来分享给大家。 jdk版本 CXF版本 java 9及以上 3.3.x java 8 3.x java 7 2.2x --- ...

    apache-cxf-2.7.7

    CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载 CXF下载

    CXF源码:CXF_Spring源码

    CXF源码:CXF_Spring源码 CXF源码:CXF_Spring源码

    cxf.xml,cxf-servlet.xml,cxf-extension-soap.xml

    &lt;import resource="classpath:META-INF/cxf/cxf.xml"/&gt; &lt;import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/&gt; &lt;import resource="classpath:META-INF/cxf/cxf-servlet.xml"/&gt;

    Spring CXF Restful 实例

    Spring CXF Restful 实例

    cxf的jar包.rar

    利用Apache CXF开发webservice接口需要用到的jar集合 cxf-core-3.0.15.jar cxf-rt-bindings-soap-3.0.15.jar cxf-rt-bindings-xml-3.0.15.jar cxf-rt-databinding-jaxb-3.0.15.jar cxf-rt-frontend-jaxws-3.0.15.jar...

    apache-cxf-3.0.4

    Apache CXF = Celtix + XFire,开始叫 Apache CeltiXfire,后来更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、...

    CXF(Webservice)开发手册

    CXF Webservice 开发手册

    cxf3.1.18.rar

    spring 4.2.0 集成的cxf3.1.18的jar包,cxf-core-3.1.18.jar、cxf-rt-bindings-soap-3.1.18.jar、cxf-rt-databinding-jaxb-3.1.18.jar、cxf-rt-frontend-jaxws-3.1.18.jar、cxf-rt-frontend-simple-3.1.18.jar、cxf-...

    cxf源代码,样例,cxfdemo

    cxf服务端开发

    用cxf开发webservice

    Apache CXF是一个开源的Service框架,它实现了JCP与Web Service中一些重要标准。CXF简化了构造,集成,面向服务架构(SOA)业务组件与技术的灵活复用。在CXF中,Service使用WSDL标准定义并能够使用各种不同的消息格式...

    Cxf转换器示例

    Web Service Cxf转换器的示例,包含源码和jar包。

    apache-cxf-3.3.5

    Apache CXF is an open source services framework. CXF helps you build and develop services using frontend programming APIs, like JAX-WS and JAX-RS. These services can speak a variety of protocols such ...

    CXF客户端支持最少jar

    CXF 客户端最少jar包支持,CXF 客户端最少jar包支持,CXF 客户端最少jar包支持,

    apache-cxf-2.7.7以及cxf客户端所需要的jar包

    apache-cxf-2.7.7以及cxf客户端所需要的jar包,命令生成webservice客户端

    apache-cxf-2.5.2

    apache-cxf-2.5.2

    cxf-core-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-core-3.0.1.jar; 赠送原API文档:cxf-core-3.0.1-javadoc.jar; 赠送源代码:cxf-core-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-core-3.0.1.pom; 包含翻译后的API文档:cxf-core-3.0.1-...

    cxf-2.4.2 jar包

    cxf-2.4.2 jar包 cxf-2.4.2 jar包 cxf-2.4.2 jar包

    cxf 3.1.1 jar包

    cxf开发所需jar包,不知为何官网下载页面打不开了,在网上着了很久的资源

Global site tag (gtag.js) - Google Analytics