CXF框架webservice教程

发布时间 : 星期四 文章CXF框架webservice教程更新完毕开始阅读

CXF框架实现webservice教程

1

1 使用CXF实现一个简单的WEB SERVICE

首先介绍如何用CXF实现一个基本的hello world

首先到apache官网去下载CXF的开发jar包

http://apache.etoak.com//cxf/2.4.3/apache-cxf-2.4.3.zip

创建cxf webservice服务器端普通java项目,叫做HelloCxfServer,把必须用到的jar文件通过构建路径引入,为了省事,可以直接把所有的jar引入

此处注意:如果是jdk1.6启动服务器会发生如下错误

JAXB 2.1 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/E:/javaLib/cxf_all_jar/jaxb-impl-2.2.1.1.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.2 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. 这是由于jdk1.6的jar包和cxf的jar包冲突造成的,

需要把cxf lib中的endorsed目录拷入到D:\\Program Files\\Java\\jdk1.6.0\\jre\\lib目录下

创建一个接口HelloWorld和一个实现类HelloWorldImpl,只提供一个成员方法,叫做sayHello,给接口和实现类添加注解@WebService,这是最基本的注解

/test/HellWorld.java源码

package test;

import javax.jws.WebService;

@WebService

public interface HelloWorld { }

String sayHello(String name);

/test/HelloWorldImpl.java源码

package test;

import javax.jws.WebService;

@WebService

public class HelloWorldImpl implements HelloWorld { }

2

@Override

public String sayHello(String name) { }

System.out.println(\方法被调用...\); return \ + name;

CXF自带了一个Web Service容器Jetty,这是一个WEB容器,类似于tomcat,能够直接发布web service,下面创建一个发布服务类MainServer,执行这个类就会运行服务器,看到控制台输出日志信息,表示启动服务成功

/test/MainServier.java源码

package test;

import org.apache.cxf.endpoint.Server;

import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

public class MainServer {

public static void main(String[] args) {

//创建一个JaxWs服务器工厂

JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean(); //设置发布类

factory.setServiceClass(HelloWorldImpl.class);

//设置服务发布的地址

factory.setAddress(\);

//根据设置创建一个服务器

Server server = factory.create(); //启动服务器

server.start();

}

}

发布成功以后,可以通过浏览器去查看生成的WSDL,

在浏览器地址栏输入http://localhost:6666/MyCxfService?wsdl,效果如下

3

下面创建访问WebService的客户端,可以重新创建一个项目,也可以就在这个项目里实现,我下面在同一个项目中创建一个类HelloWorldCient

/test/HelloWorldClient.java源码

package test;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;

import org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean;

public class HelloWorldClient { }

public static void main(String[] args) { }

//创建一个JaxWs的代理工厂

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); //设置访问地址

factory.setAddress(\); //设置接口类型

factory.setServiceClass(HelloWorld.class);

//获得代理类实例

HelloWorld helloWorld = (HelloWorld) factory.create();

//调用方法

String str = helloWorld.sayHello(\张三\); System.out.println(str);

运行客户端,会看到控制台,输出:hello,张三

4

联系合同范文客服:xxxxx#qq.com(#替换为@)