发布时间 : 星期四 文章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