1、使用CXF开发Web Service服务端
1.1 开发一个Web Service业务接口,该接口要用@WebService修饰
(1)创建一个Java项目MyServer
(2)在MyServer项目中创建一个接口HelloWorld
package com.xju.ws; import javax.jws.WebService; @WebService public interface HelloWorld { String sayHello(String name); }
1.2 开发一个Web Service实现类,实现类也需要用@WebService修饰
package com.xju.ws.impl; import javax.jws.WebService; import com.xju.ws.HelloWorld; @WebService(endpointInterface = "com.xju.ws.HelloWorld", serviceName = "HelloWorldWs") public class HelloWorldWs implements HelloWorld { @Override public String sayHello(String name) { // TODO Auto-generated method stub return null; } }
1.3 使用Endpoint类的静态方法来发布WebService
package com.xju.ws.pub; import javax.xml.ws.Endpoint; import com.xju.ws.HelloWorld; import com.xju.ws.impl.HelloWorldWs; public class ServerMain { public static void main(String[] args) { HelloWorld hw=new HelloWorldWs(); Endpoint.publish("http://127.0.0.1:8080/test", hw); System.out.println("发布成功"); } }
备注:在运行中必须添加CXF2.7运行库。
2 使用CXF开发Web Service客户端
2.1 调用CXF提供的wsdl2java工具,根据WSDL文件生成相应的Java代码
在DOS中进入当前项目的src目录下,如输入下命令:
wsdl2java -frontend jaxws21 http://127.0.0.1:8080/test?wsdl
备注:加入参数-frontend jaxws21,为了防止出现CXF自带的javax.xml.service 版本高过jdk的javax.xml.service时报错:构造函数 Service(URL, QName, WebServiceFeature[]未定义。
2.2 找到wsdl2java所生成类中,一个继承了Service的类,该类的实例当成工厂来使用
2.3 调用Service子类的实例的getXxxPort方法,返回远程WebService代理
package com.xju.publish; import com.xju.ws.HelloWorld; import com.xju.ws.impl.HelloWorldWs; public class ClientMain { public static void main(String[] args) { HelloWorldWs factory=new HelloWorldWs(); HelloWorld hw=factory.getHelloWorldWsPort(); System.out.println(hw.sayHello("yyq")); } }
运行结果:
yyq,你好!现在时间是:Sun Aug 10 23:51:39 CST 2014
备注:此处也可以使用创建Web Service客户端的方法来创建。
本文出自 “IT技术学习与交流” 博客,谢绝转载!