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);
一、与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.jarSpring 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.jarCXF jar
cxf-2.0-incubator.jarb). 编写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一个对象一样简单
获得他们的一个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一个对象一样简单
获得他们的一个Service对象就跟new一个对象一样简单
jnn
2007-11-27
CXF 2.0.3 在半个月前就发布了。
建议大家使用2.0.3, 因为修正了很多2.0.2 之后发现的bug。
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 11883 次
- 性别:

- 来自: 深圳

- 详细资料
搜索本博客
我的相册
o_JUnit8
共 13 张
共 13 张
最近加入圈子
最新评论
-
Eclipse无提示的解决办法 ...
楼主太厚道了,解决我一大难题。相当感谢
-- by freemanxm84 -
Hibernate 杂烩
问一下知不知道 createCriteria与createAlias有什 ...
-- by diyutaizi3721 -
在Eclipse中使用JUnit4进 ...
挺好,有专门的电子书吗?
-- by husxwy -
tomcat连接池的各项配置详 ...
andyu2008 写道 设置tomcat的环境变量: 假如你的tomcat ...
-- by jackymin -
Apache CXF 学习笔记
jnn 写道flamefox 写道CFX对于RPC/encoded方式的wsdl ...
-- by flamefox








评论排行榜