您的位置:首页 > 编程语言 > Java开发

使用Axis+Eclipse开发webservice

2012-10-09 17:42 232 查看

使用Axis+Eclipse开发webservice

什么是webservice?

从架构师的角度来理解:webservice是一个软件系统,为了支持跨网络的机器间相互操作交互而设计。Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用,来执行远程系统的请求服务。

从一个程序员的视角来理解:在传统的程序编码中,存在这各种的函数方法调用。通常,我们知道一个程序模块M中的方法A,向其发出调用请求,并传入A方法需要的参数P,方法A执行完毕后,返回处理结果R。这种函数或方法调用通常发生在同一台机器上的同一程序语言环境下。现在的我们需要一种能够在不同计算机间的不同语言编写的应用程序系统中,通过网络通讯实现函数和方法调用的能力,而Web service正是应这种需求而诞生的。

简单来说,webservice就是一个网络组件,一个可以通过网络访问的程序。

Webservice、WSDL、SOAP的关系
Web Service = SOAP + HTTP + WSDL。其中,SOAP Simple Object Access Protocol)协议是web service的主体,它通过HTTP或者SMTP等应用层协议进行通讯,自身使用XML文件来描述程序的函数方法和参数信息,从而完成不同主机的异构系统间的计算服务处理。这里的WSDL(Web Services Description Language)web服务描述语言也是一个XML文档,它通过HTTP向公众发布,公告客户端程序关于某个具体的Web service服务的URL信息、方法的命名,参数,返回值等。

Webservice服务器端工作流程

1 监听网络端口(监听服务端口)

2接收客户端请求(接收SOAP请求)

3 解析客户端请求(解析SOAP消息,将SOAP消息转换为数据对象)

4 调用业务逻辑(调用Web Service实现类的特定操作,参数是由SOAP消息转换而来的数据对象)

5 生成响应(将返回值转换为SOAP消息)

6 返回响应(返回SOAP响应)

Webservice客户端工作流程

1 构造SOAP请求消息(将本地数据对象转换为SOAP消息)

2 发送SOAP消息到Web Service服务器的指定端口

3接收SOAP响应消息

4将SOAP响应消息转换为本地数据对象

以上知识点参考了互联网上的相关信息以帮助理解开发原理,读者想要详细学习wsdl和soap的话,可到w3cschool网站查阅相关资料。下面介绍怎么使用AXIS+Eclipse开发webservice。

Eclipse JEE Ganymede是eclipse的一个发行版本,集成了J2EE开发过程中的常用工具插件,包括我们在webservice开发中用到的axis,axis是一个soap引擎,是一个提供创建服务器端、客户端和SOAP操作的基本框架,由apache基金会开发维护。Ganymede下载地址http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/ganymedesr2。

当然,正常使用eclipse的前提是你正确安装了JDK,设置了JAVA_HOME、CLASSPATH等相关环境变量,这里就不赘述了。

webservice服务器端开发

首先建立一个Dynamic Web Project。这里我取名为WebserviceTest。

新建一个java类,在类里定义相关的方法供webservice使用。之前我看过一篇利用MyEclipse6.5开发基于JAX-WS的Webservice的文章,这里引用它用到的Calculator例子。

ws.Calculator.java:

packagews;

publicclassCalculator{

publicintadd(inta,intb) {

return(a + b);

publicintsubtract(inta,intb) {

return(a - b);

publicintmultiply(inta,intb) {

return(a * b);

publicintdivide(inta,intb) {

return(a / b);

选中工程WebserviceTest,依次点击file-new-other,打卡New Wizard窗口,选择Web Services-Web Service。



点击next,点击service implementation项中的browse按钮,选择刚刚创建的Calculator.java类,注意Configuration信息中ServiceProject是不是刚刚我们选中的WebserivceTest工程,否则要取消重来;选中Publish the web service复选框。其他配置保持默认,点击finish。



如果创建成功,可以看到生成了相关的wsdl和wsdd文件。Wsdl文件对外描述本webservice的相关信息,外部系统可以通过该文件建立客户端来调用该文件对应的webservice。Wsdd文件则是webservice的部署配置文件。



打开web.xml可以看到多了以下一个servlet及其映射:

<servlet>

<display-name>Apache-AxisServlet</display-name>

<servlet-name>AxisServlet</servlet-name>

<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>

</servlet>

<servlet>

<display-name>AxisAdminServlet</display-name>

<servlet-name>AdminServlet</servlet-name>

<servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class>

<load-on-startup>100</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>AxisServlet</servlet-name>

<url-pattern>/servlet/AxisServlet</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>AxisServlet</servlet-name>

<url-pattern>*.jws</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>AxisServlet</servlet-name>

<url-pattern>/services/*</url-pattern>

</servlet-mapping>

<servlet-mapping>

<servlet-name>AdminServlet</servlet-name>

<url-pattern>/servlet/AdminServlet</url-pattern>

</servlet-mapping>

打开Calculator.wsdl,找到service结点,我们发现访问这个webservice的地址是http://localhost:8080/WebserviceTest/services/Calculator。

把工程WebserivceTest部署到tomcat,启动tomcat,在浏览器地址栏敲入http://localhost:8080/WebserviceTest/services/Calculator?wsdl,如果可以看到返回的wsdl文件,就说明webservice已经在工作了。

在不建立客户端的情况下,我们也可以通过eclipse内置的webservice explorer来对webservice进行调用测试。

把eclipse切换到Java EE perspective,点击工具栏顶部的按钮,如下图,启动webservice explorer。



在出现的webservice explorer页面中,点击右上角的WSDL Page按钮,调出WSDL页面,在WSDL URL输入框中输入webservice所在的URL,如:http://localhost:8080/WebserviceTest/services/Calculator?wsdl,点击go。



这样我们可以看到在webservice中提供给外界调用的所有方法。选择subtract,输入参数a为7,b为3,点击go,可以发现在status栏下返回了正确的结果4.



webservice客户端开发

使用axis+eclipse可以根据webservice提供的wsdl文件方便地生成客户端代码。

新建一个普通的java project,这里我命名为WebserviceClientTest。选中刚刚新建的工程,依次点击file-new-other,打卡New Wizard窗口,选择Web Services-Web Service Client,点击next,在Web Service Client窗口中为Service Definition选项浏览选择刚刚我们在服务端开发中生成的wsdl文件Calculator.wsdl,直接finish。

可以看到一共生成了5个java文件。其中CalculatorServiceLocator.java中定义了webservice服务端的访问URL,如果有必要可以修改它;CalculatorProxy.java是调用服务端的代理类,我们可以通过它的实例来对webservice进行调用。



最后我们新建一个Test类来进行测试:

Test.java:

packagews;

publicclassTest{

publicstaticvoidmain(Stringargs[]){

CalculatorProxycalculatorProxy=newCalculatorProxy();

try{

intresult =calculatorProxy.add(4,2);

System.out.println("the result is:"+result);

}catch(Exceptione) {

e.printStackTrace();

开启tomcat启动webservice,右击Test.java-Run As-Java Application,输出:

the result is:6

大功告成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: