读书笔记一中说了SOA只是一种思想,是一种虚拟的架构,不同的厂商有不同程度的支持和实现。原则上SOA的实现不依赖于任何服务组件,因为它可以随意绑定EJB、Web Service、JMS等任何形式发布在网上的服务组件。但是就是由于Web Service的成熟才为SOA的实施打下了基础,才促进了SOA的发展,所以目前SOA的构成元素服务组件主要还是指Web Service-Web服务。
Web服务的介绍很多,不在细说。大意就是发布在网上能供用户发现、并调用的有一定独立功能的组件,传输协议为SOAP,WSDL用来描述服务的接口、协议和位置。服务提供者注册WSDL,客户发现、分析WSDL,从而调用相应的Web服务。
下面主要介绍如何开发、发布、调用Web服务。
环境搭建:
1。Axis2是Apache新推出的web服务模型,将会取代Axis。下载地址http://ws.apache.org/axis2/,下载Axis2 1.5.1二进制版。解压缩即可。如D:/Program Files/axis2-1.5.1
2。eclipse,用j2ee eclipse 3.5 galileo版。打开eclipse,选择window-preferences-Web Services-Axis2 Preferences,选择标签Axis2 Runtime,在Axis2 runtime location处浏览到axis2的安装路径,即D:/Program Files/axis2-1.5.1。点击OK即可。
有图有真相:
3。安装tomcat,如C:/Program Files/Apache Software Foundation/Tomcat 6.0。eclipse-window-preferences-server-runtime enviroments,选择add-apache-apache tomcat v6.0-next,选择tomcat installation directory,浏览到安装目录如C:/Program Files/Apache Software Foundation/Tomcat 6.0,选择jre-jdk1.6.0_01,即你机子上已安装的java开发环境。最后点击finish即可。
eclipse的开发环境到此搭建完成,下面进行例子开发。
1。eclipse-file-new-dynamic web project,新建项目名WebServiceAxis2,选择Target runtime:Apache Tomcat v6.0,如果没有,新建应用服务器。点击configuration项目中点击modify,选中Axis2 Web Services,点击OK。点击finish即可。得到如下的项目结构:
如此运行下去肯定会有错误,我就先剧透吧。给出解决办法:
a. 打开web.xml,更改 为 。在eclipse的project explorer下打开项目的结构:WebServiceAxis2-WebContent-WEBINF-classes-org-apache-axis2-webapp,就会发现AxisAdminServlet类在此路径下,而org.apache.axis2.transport.http包下并不能找到AxisAdminServlet。
b. 到axis2安装目录下的lib中拷贝httpcore-4.0.jar包到项目的WEB-INF的lib中。
2。在src下新建rpcclient包和service包,在service包中新建类HelloService.java,代码如下
3。发布服务HelloService,对外公布方法接口getHello。选择HelloService.java,点右键,new-other-Web Services-Web Service-next,弹出web sevice配置窗口,选中publish the web service。最后结果如下图:
另外要注意,web service runtime为apache axis2,如果不是,点击修改。一路点击next,最后选择start server,点击finish完成。
打开浏览器输入网址:http://localhost:8080/WebServiceAxis2/axis2-web/,点击services,出现如下图示:
则表明服务HelloService发布成功!点击HelloService则可以看到系统为该服务自动生成的WSDL描述文件:
4。创建客户端调用程序。在rpcclient包中新建类HelloRPCClient.java
点击HelloRPCClient,右键,run as-java application,控制台出现helloaihu! This is AXIS2 Web Service Response。则表示客户端调用服务HelloService成功。
至此web服务的发布和调用,我们已经学习完了。注意在查看服务发布是否成功以及调用服务的时候,请确保服务器Tomcat已经启动。最后看下项目结构如下: