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 );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值