CXF框架实现webservice教程.doc
文本预览下载声明
PAGE \* MERGEFORMAT 12
CXF框架实现webservice教程
1 使用CXF实现一个简单的WEB SERVICE
首先介绍如何用CXF实现一个基本的hello world
首先到apache官网去下载CXF的开发jar包
HYPERLINK //cxf/2.4.3/apache-cxf-2.4.3.zip //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-.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 {
@Override
public String sayHello(String name) {
System.out.println(sayHello方法被调用...);
return hello, + 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(http://localhost:6666/MyCxfService);
//根据设置创建一个服务器
Server server = factory.create();
//启动服务器
server.start();
}
}
发布成功以后,可以通过浏览器去查看生成的WSDL,
在浏览器地址栏输入 HYPERLINK http://localhost:6666/MyCxfService?wsdl http://localhost:6666/MyCxfService?wsdl,效果如下:
下面创建访问WebService的客户端,可以重新创建一个项目,也可以就在这个项目里实现,我下面在同一
显示全部