2007-11-27

Apache CXF 学习笔记

关键字: Apache CXF
Apache CXF 则是由 Celtix 和 XFire 项目整合而生,并且刚刚发布了 2.0.2 的最新版本,不过仍是 Apache 的一个孵化项目。

一、与Axis2的不同之处
1、Apache CXF 支持 WS-Addressing、WS-Policy、WS-RM、WS-Security和WS-I BasicProfile
2、Axis2 支持 WS-Addressing、WS-RM、WS-Security和WS-I BasicProfile,WS-Policy将在新版本里得到支持
3、Apache CXF 是根据Spring哲学来进行编写的,即可以无缝地与Spring进行整合
4、Axis2 不是
5、Axis2 支持更多的 data bindings,包括 XMLBeans、JiBX、JaxMe 和 JaxBRI,以及它原生的 data binding(ADB)。
6、Apache CXF 目前仅支持 JAXB 和 Aegis,并且默认是 JAXB 2.0,与 XFire 默认是支持 Aegis 不同,XMLBeans、JiBX 和 Castor 将在 CXF 2.1 版本中得到支持,目前版本是 2.0.2
7、Axis2 支持多种语言,它有 C/C++ 版本。
8、Apache CXF 提供方便的Spring整合方法,可以通过注解、Spring标签式配置来暴露Web Services和消费Web Services

二、A simple JAX-WS service
原文见http://cwiki.apache.org/CXF20DOC/a-simple-jax-ws-service.html

a). 设置构建路径,将下列jar包放到项目中
the CXF distribution
commons-logging-1.1.jar
geronimo-activation_1.1_spec-1.0-M1.jar (or Sun's Activation jar)
geronimo-annotation_1.0_spec-1.1.jar (JSR 250)
geronimo-javamail_1.4_spec-1.0-M1.jar (or Sun's JavaMail jar)
geronimo-servlet_2.5_spec-1.1-M1.jar (or Sun's Servlet jar)
geronimo-ws-metadata_2.0_spec-1.1.1.jar (JSR 181)
jaxb-api-2.0.jar
jaxb-impl-2.0.5.jar
jaxws-api-2.0.jar
jetty-6.1.5.jar
jetty-util-6.1.5.jar
neethi-2.0.jar
saaj-api-1.3.jar
saaj-impl-1.3.jar
stax-api-1.0.1.jar
wsdl4j-1.6.1.jar
wstx-asl-3.2.1.jar
XmlSchema-1.2.jar
xml-resolver-1.2.jar

Spring jars
aopalliance-1.0.jar
spring-core-2.0.4.jar
spring-beans-2.0.4.jar
spring-context-2.0.4.jar
spring-web-2.0.4.jar

CXF jar
cxf-2.0-incubator.jar

b). 编写Service代码
接口HelloService.java
package demo.cxf.server;

import javax.jws.WebParam;
import javax.jws.WebService;

@WebService
public interface HelloService {

    
public String sayHello(@WebParam(name="text")String text);
}

实现类HelloServiceImpl
package demo.cxf.server;

import javax.jws.WebService;

@WebService(endpointInterface
="demo.cxf.server.HelloService",serviceName="helloService")
public class HelloServiceImpl implements HelloService {
    
    
public String sayHello(String text) {
        
return "Hello ".concat(text);
    }


}

c). 发布服务
        System.out.println("Starting Server");
        HelloServiceImpl impl 
= new HelloServiceImpl();
        String addr 
= "http://localhost:80/helloService";
        Endpoint.publish(addr,impl);

d). 客户端调用
        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
        factory.getInInterceptors().add(
new LoggingInInterceptor());
        factory.getOutInterceptors().add(
new LoggingOutInterceptor());
        factory.setServiceClass(HelloService.
class);
        factory.setAddress(
"http://localhost:9000/helloService");
        HelloService service 
= (HelloService)factory.create();
        
        String reply 
= service.sayHello("cxf.");
        System.out.println(reply);
        System.exit(
0);
评论
flamefox 2008-04-28
jnn 写道
flamefox 写道
CFX对于RPC/encoded方式的wsdl文档的解析能力怎样,能解析带环对象或者多重引用对象么,对于和GSOAP的通讯支持的怎样。生成的wsdl能否由gsoap提供的wsdl2h无警告方式生产接口呢?


rpc-encoded 这种方式由于互操作性的问题已经被 JAXWS 抛弃掉了。
CXF提供了JAXWS的实现,因此不支持 rpc-encoded。

GSOAP我没有用过,如果GSOAP是以 document-literal方式传输的,那应该和CXF交互没有问题。


抛弃了啊,多好的一个协议啊,既然被抛弃那就算了(传过来的链接关系是怎样解析出来的链接关系就是怎样的,这么好的东西都被抛弃)


gsoap解析XFire生成的wsdl显然会发出多个警告,个人以为,gsoap兼容性是最强的
jnn 2008-04-26
flamefox 写道
CFX对于RPC/encoded方式的wsdl文档的解析能力怎样,能解析带环对象或者多重引用对象么,对于和GSOAP的通讯支持的怎样。生成的wsdl能否由gsoap提供的wsdl2h无警告方式生产接口呢?


rpc-encoded 这种方式由于互操作性的问题已经被 JAXWS 抛弃掉了。
CXF提供了JAXWS的实现,因此不支持 rpc-encoded。

GSOAP我没有用过,如果GSOAP是以 document-literal方式传输的,那应该和CXF交互没有问题。
flamefox 2008-04-25
CFX对于RPC/encoded方式的wsdl文档的解析能力怎样,能解析带环对象或者多重引用对象么,对于和GSOAP的通讯支持的怎样。生成的wsdl能否由gsoap提供的wsdl2h无警告方式生产接口呢?
jnn 2008-04-24
Joo 写道
不知道CXF有什么优势 我在Netbeans里面使用标准的JAX-WS很轻松的就能获取对方发布的ws
获得他们的一个Service对象就跟new一个对象一样简单


CXF 也支持JAX-WS API。
如果你想通过spring来配置endpoint的话,CXF是最简单不过的,这是Sun的RI所欠缺的。

CXF采用的apache license, 你可以在CXF之上构建你自己的商业产品而不需要付任何费用,这也是Sun的RI所不及的。

CXF灵活的Binding支持,并提供了CORBA binding 这也是Sun的RI所没有的。

...
Joo 2008-04-24
不知道CXF有什么优势 我在Netbeans里面使用标准的JAX-WS很轻松的就能获取对方发布的ws
获得他们的一个Service对象就跟new一个对象一样简单
jnn 2007-11-27
CXF 2.0.3 在半个月前就发布了。 建议大家使用2.0.3, 因为修正了很多2.0.2 之后发现的bug。
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

andyu2008
搜索本博客
博客分类
我的相册
51504f61-e0ca-4a0a-a7b7-732db4bf4fe3-thumb
o_JUnit8
共 13 张
最近加入圈子
存档
最新评论