使用CXF开发WebService服务器端和客户端[案例]
Web Servce能解决的问题:
1、远程调用
2、跨平台调用
3、语言调用
Web Servce实际用途:
1、同意公司的新旧系统整合;
2、不同公司的业务整合;
3、内容聚合;
本次使用号称SOA框架的CXF(Xfire + Celtrix ← 具体请找度娘)来写一个Web Service的例子。
预备:
1、eclipse
2、apache-cxf-2.1.4(不要在意版本)
Web Service服务器端(PS:CXF内置一个Jetty Web服务器):
1、创建一个java projact(普通的java项目,由于这只是个例子文件夹结构名字什么的随意就好√),需要添加CXF的jar包↓
2、写一个web service接口,该接口要用@WebService修饰
package org.night; import javax.jws.WebService; @WebService public interface HelloWord { String sayHi(String name); }
3、写一个该接口的实现类,同样需要@WebService修饰(serviceName是自定义的,并不是非要和实现类一样名)
package org.night.impl; import java.util.Date; import javax.jws.WebService; import org.night.HelloWord; @WebService(endpointInterface="org.night.HelloWord", serviceName="HelloWordImpl") public class HelloWordImpl implements HelloWord{ @Override public String sayHi(String name) { return name + " 你好" + " 时间:" + new Date(); } }
4、发布,创建一个类,main调用Endpoint.publish(address, implementor),第一个参数是自己的应用地址
package org.night.N; import javax.xml.ws.Endpoint; import org.night.HelloWord; import org.night.impl.HelloWordImpl; public class ServiceMain { public static void main(String[] args) { HelloWord hw = new HelloWordImpl(); //调用Endpoint.publish()发布WebService Endpoint.publish("http://192.168.1.101/nightWebService", hw); System.out.println("Web Service Run"); } }
运行↓
在浏览器上输入服务器端的绑定的地址+?+wsdl会出现↓↓↓↓↓↓↓↓↓↓↓↓
Web Service客户端:
1、新创建一个java projact
2、打开控制台找到客户端的src路径,调用CXF提供的wsdl2java工具(在根目录bin文件夹下面)↓如图
3、经过以上步骤,客户端会自动生成代码↓
找到wsdl2java生成的Service接口的实现类,嘛~其实就是对应服务器实现业务借口的实现类,只是因为这里服务器端也是自己开发的,所以很容易知道~
4、写一个类调用Service子类的实例的get**Port()(**为实现类名)方法,会返回远程Web Service的代理,则可调用服务器端的方法↓
下一篇: Struts2.1.2 Beta 发布