`
alvinqq
  • 浏览: 185403 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

MyEclipse下开发Web Service(Axis)

阅读更多

本文主要描述如何使用Apache开源项目Axis提供的API来实现Web Services。本文中的提到的例子只为了方便本文的描述而提出,有不妥之处请见谅。

    本文的读者应有JAVA web 应用开发基础。应该具有看过WSDL,SOAP,XML等的基本规范。熟悉Eclipse+MyEclipse开发环境。

    本文可以随意转载使用,但是要保留作者的署名。

一、环境准备
使用Axis来开发Web services 需要准备 web 服务器,Axis API。本文使用的Web container 是Tomcat5.5, Axis API 采用版本2。

1.1软件下载准备

Tomcat下载地址:http://tomcat.apache.org/download-55.cgi#5.5.20
Axis标准包:

http://ftp.wayne.edu/apache/ws/axis2/1_0/axis2-std-1.0-bin.zip

Axis War包:

http://ftp.wayne.edu/apache/ws/axis2/1_0/axis2.war

Axis Eclipse plug-in(代码生成工具和打包工具):

http://apache.justdn.org/ws/axis2/tools/1_0/Axis2_Code_Generator.zip

http://apache.justdn.org/ws/axis2/tools/1_0/Axis2_Service_Archiver.zip

Eclipse+MyEclipse:可以到官方网站下载(本文为3.2+5.0GA)

1.2安装

A.首先搭建开发环境,需要将下载到的Eclipse解压缩到一个目录。

B.将下载到的Axis 的两个plug-in解压缩到Eclipse安装目录下的plug-in子目录。

C.安装MyEclipse5.0GA。然后启动MyEclipse,并选择“File->New->Other”可以找到下面的这些Wizards,这些将是本文中用到的很重要的工具。


                             D.下面开始搭建Web Services的部署环境。将下载的

          tomcat报解压缩到一个目录。完成web container

          的安装。

        E.将axis2.war包拷贝到tomcat安装目录下的webapps

          目录中。

F.启动Tomcat(windows 下为TOMCA_HOME/bin中的startup.bat;Linux,unix环境为startup.sh文件),打开浏览器输入并访问:http://ip:port/axis2来查看。(如果没有进行陪孩子文件的修改此地址应该为http://localhost:8080/axis),如果能看到下面的页面则说明已经安装完成。


二、Quick Start
环境准备好后,先从一个简单的例子开始。以便对使用Axis来开发Web services的大致流程有个了解。这个例子就是SayHello,请求端输入一个名字字符串,返回的将是一个问候语。

例如:输入了Tom,那么返回的事Hi,Tom.How are you?

2.1编写WSDL

A.启动MyEclipse,新建立一个WebApps(File->New->Project->Web Project),给Project Name 为SayHello,其他保持不改变。

B.选择File->New-Other菜单,进入后找到MyEclipse->Web Services并选择WSDL.

C. 选择“src”目录作为“Enter or select the parent folder”的值,“File name”值给定为SayHello.wsdl。点击“Next”进入下一步。



D.将目标命名空间设置为“http://ws.tonyzhangcn.org/SayHello/”.在生成代码的时候一般以这个命名空间为package的名字,例如:org.tonyzhangcn.ws.sayhello。这些值可以按需要设置。



E.点击“Finish”按钮就可以看到MyEclipse提供的WSDL 设计器的界面了。可以看到设计器为WSDL默认的添加了一个现操作。


 
即图中的“NewOperation”。现在将其改名为SayHello,如下图:



         之后点击设计界面中的“Source”Tab来查看其代码。如下:可以看到我们定义了一个SayHello的Web Services,她提供了一个SayHello的方法,她能够接受一个String(事实上是tns:SayHelloRequest对象,她对String进行了封装)类型的输入参数SayHelloRequest并返回一个String(事实上是tns:SayHelloResponse对象,她对String进行了封装)类型的SayHelloResponse结果。更多关于WSDL的信息,请参考W3C的规范文档。


<?xml version="1.0" encoding="UTF-8"?>

<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.tonyzhangcn.org/SayHello/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="SayHello" targetNamespace="http://ws.tonyzhangcn.org/SayHello/">

<wsdl:types>

<xsd:schema targetNamespace="http://ws.tonyzhangcn.org/SayHello/">

<xsd:element name="SayHelloResponse" type="xsd:string" />

<xsd:element name="SayHelloRequest" type="xsd:string" />

</xsd:schema>

</wsdl:types>

<wsdl:message name="SayHelloResponse">

<wsdl:part element="tns:SayHelloResponse" name="SayHelloResponse" />

</wsdl:message>

<wsdl:message name="SayHelloRequest">

<wsdl:part element="tns:SayHelloRequest" name="SayHelloRequest" />

</wsdl:message>

<wsdl:portType name="SayHello">

<wsdl:operation name="SayHello">

<wsdl:input message="tns:SayHelloRequest" />

<wsdl:output message="tns:SayHelloResponse" />

</wsdl:operation>

</wsdl:portType>

<wsdl:binding name="SayHelloSOAP" type="tns:SayHello">

<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />

<wsdl:operation name="SayHello">

<soap:operation soapAction="http://ws.tonyzhangcn.org/SayHello/NewOperation" />

<wsdl:input>

<soap:body use="literal" />

</wsdl:input>

<wsdl:output>

<soap:body use="literal" />

</wsdl:output>

</wsdl:operation>

</wsdl:binding>

<wsdl:service name="SayHello">

<wsdl:port binding="tns:SayHelloSOAP" name="SayHelloSOAP">

<soap:address location="http://www.example.org/" />

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

至此WSDL的编写已经完成。

2.2从WSDL生成Java代码

A.选择菜单“File->New->Other”,从对话框中选取“Axis2 Wizards”下面的“Axis2 Code Generator”.点击“Next”进入下一个页面,保持“Generate java source code from WSDL file”被选中,点击“Next”进入下一步。

B.点击“Browse”来选取存放在src目录下的SayHello.wsdl文件,“Next”进入下一步。设置如下:



C.点击“next”进入下一个页面,设置“Output path”为本Project的src目录。点击“finish”后代在SayHello项目上按F5刷新就可以看到有代码生成好了。但是能看到一堆红“x”,这是由于没有将Axis2的jar包放入class path 中以及源代码的package不为org.tonyzhangcn.ws.sayhello引起的。



下面解决这个问题,首先选择“SayHello”项目,并右击选择“Build path->Add External Archives..”,选择上面部署在tomcat中的axis2 web应用WEB-INF/lib目录中的所有jar包。之后右击“src.org.tonyzhangcn.ws.sayhello”项目,选择“Refactor->rename”,做如下修改,并选择OK完成。



这个时候发现test.org.tonyzhangcn.ws.sayhello下面的SayHelloTest.java仍然存在问题。点击此文件中package 关键子前面的红“x”,会提示有两个选项,我们选择下面的那个。



选择public class SayHelloTest前的红“x”,选择第一项。



进行完这几个改动之后,生成的代码就没有问题了。其中

SayHelloRequest,SayHelloResponse是输入输出参数对象。

SayHelloSkeleton是服务端对象,用来编写业务逻辑调用。

SayHelloStub是客户端用来定位endpoint(就是发布的Web Services的地址)的类,客户端根据其提供的方法定位Web服务并发起调用

SayHelloMessageReceiverInOut是一个实现同步调用的web服务信息转换处理类。

Resources目录下的services.xml文件是webservices的描述文件。

SayHelloTest是一个客户端的TestCase示例,用户可以根据这个示例来编写自己的客户端调用类。

2.3编写业务代码

打开SayHelloSKeleton.java文件将其中的实现方法

public org.tonyzhangcn.ws.sayhello.SayHelloResponse SayHello(org.tonyzhangcn.ws.sayhello.SayHelloRequest param0)

{

// Todo fill this with the necessary business logic

throw new java.lang.UnsupportedOperationException();

}


改为

public org.tonyzhangcn.ws.sayhello.SayHelloResponse SayHello(org.tonyzhangcn.ws.sayhello.SayHelloRequest request)

{

// Todo fill this with the necessary business logic

try

{

SayHelloResponse response = new SayHelloResponse();

response.setSayHelloResponse("Hi,"+request.getSayHelloRequest()+".How are you?");

return response;

}catch(UnsupportedOperationException e)

{

throw e;

}

}

2.4打包

A.选择菜单“File->New->Other”,从对话框中选取“Axis2 Wizards”下面的“Axis2 Services Archive”.点击“Next”进入下一个页面。

B.选择编译好的class文件所在目录(本项目应该是WebRoot下面WEB-INF/classes),“Next”进入下一步。

C.选择WSDL文件所在目录,此处为src目录下的SayHello.wsdl文件。“Next”,再“Next”。选择services.xm文件,本文应该是生成再src/resources下面的services.xml文件。点击一次“Next”。
D.点击“Next”,将记入最后一个页面,此处有两个选项,一个是输出目录一个是处处文件名称。我这里的输出文件名称给的是SayHello。点击“Finish”完成。

2.5部署

A.将打包好的文件SayHello.jar(或者可以改名为SayHello.aar),拷贝到Tomcat中已经部署的Axis2应用的WEB-INF/services目录下面。

B.启动Tomcat(即点击Tomcat安装目录下的startup.bat,linux或unix下执行startup.sh)。

C.打开浏览器,输入http://ipaddress:port/axis2(一般为http://localhost:8080/axis2),并点击其中的“services”链接



   可以看到SayHello已经被部署。点击SayHello提供的连接可以看到与之对应的WSDL。

2.6调用测试

A.修改SayHelloTest.java文件中的方法testSayHello的内容为:

public void testSayHello() throws java.lang.Exception

{

String url="http://localhost:8080/axis2/services/SayHello";

org.tonyzhangcn.ws.sayhello.SayHelloStub stub = new org.tonyzhangcn.ws.sayhello.SayHelloStub(url); // the

org.tonyzhangcn.ws.sayhello.SayHelloRequest request = (org.tonyzhangcn.ws.sayhello.SayHelloRequest) getTestObject(org.tonyzhangcn.ws.sayhello.SayHelloRequest.class);

request.setSayHelloRequest("tonyzhangcn");

System.out.println(stub.SayHello(request).getSayHelloResponse());

// todo Fill in the param14 here

assertNotNull(stub.SayHello(request));

}

B.从菜单中选择“Run->Run as->JUnit Test”。



     可以看到web 服务已经正确的返回了结果。那么,不用TestCase类可以调用WebServices吗?答案是肯定的,我们可以随便些一个带有main方法的类,并仿照SayHelloTest.java中的testSayHello()方法就可以达到调用Web Services的目的了。


  • 大小: 22.5 KB
  • 大小: 76.9 KB
  • 大小: 19.8 KB
  • 大小: 19.3 KB
  • 大小: 9.4 KB
  • 大小: 9.1 KB
  • 大小: 26.6 KB
  • 大小: 9.3 KB
  • 大小: 12.7 KB
  • 大小: 17.3 KB
  • 大小: 20.3 KB
  • 大小: 59.1 KB
  • 大小: 50.2 KB
分享到:
评论

相关推荐

    MyEclipse下开发Web Service(Axis)2

    MyEclipse下开发Web Service(Axis)2 一、环境准备 在使用 Axis 开发 Web Service 时,需要准备 web 服务器和 Axis API。本文使用的 Web container 是 Tomcat5.5,Axis API 采用版本 2。为便于开发,需要 downloads...

    MyEclipse下开发Web Service(Axis2)

    本教程将深入探讨如何在MyEclipse集成开发环境中使用Axis2来开发Web服务。 1. **MyEclipse简介** MyEclipse是一款强大的Java EE集成开发环境,它是Eclipse的商业版本,支持多种Web应用开发,包括JSP、Servlet、...

    MyEclipse下开发Web_Service(Axis2)

    MyEclipse下开发Web_Service(Axis2),全部免费下载了,全部免费了,非常的好用

    MyEclipse下开发Web_Service(Axis2).pdf

    MyEclipse下开发Web_Service(Axis2).pdf

    MyEclipse下开发Web_Service(Axis).doc

    - **Axis Eclipse插件**:用于在MyEclipse中生成代码和打包Web服务,需要安装Axis Code Generator和Axis Service Archiver插件。 - **MyEclipse**:需要安装Eclipse 3.2及MyEclipse 5.0 GA,提供对Web服务开发的...

    MyEclipse下开发Web Service两种方法

    在附件中,"Ñ╬XFile╡oºGwebService--╕g┤·╕╒ok2010-04-14.doc"可能是关于使用XFile开发Web服务的详细文档,而"AXIS2--╡oºGService--╕g┤·╕╒okíXÑ[║δ.docx"则是关于Axis2的指南。这两份文档可以...

    MyEclipse下开发WebService(Axis).pdf

    在MyEclipse中开发Web Service,可以利用内置的工具和插件简化流程,提高开发效率。 2. **Apache Axis** Apache Axis是Apache软件基金会开发的一个开源项目,它提供了用于创建和部署Web Service的API和工具。Axis...

    MyEclipse 开发部署 Web Service

    Web服务是一种基于标准协议(如SOAP、REST等)在不同应用之间交换数据和服务的方法...通过学习如何在MyEclipse中使用xfire和axis,你可以掌握创建、部署和调用Web服务的基本技能,为未来的分布式系统开发奠定坚实基础。

    axis2 webservice for myeclipse插件Axis2_Service_Archiver_1.3.0

    标题中的“Axis2_Service_Archiver_1.3.0”指的是一个针对MyEclipse集成开发环境的Axis2 Web服务插件,版本为1.3.0。这个插件是Axis2框架的一部分,用于简化在MyEclipse中创建、部署和管理Axis2 Web服务的过程。 ...

    在MyEclipse环境下配置Axis2的详细步骤与web service简单程序应用

    ### 在MyEclipse环境下配置Axis2的详细步骤与web service简单程序应用 #### 一、配置Axis2在MyEclipse中的环境 对于初次接触MyEclipse结合Axis2进行Web Service开发的学习者而言,掌握正确的配置步骤是至关重要的...

    MyEclipse下使用Axis开发Web Service()

    本文主要描述如何使用Apache开源项目Axis提供的API来实现Web Services。本文中的提到的例子只为了方便本文的描述而提出,有不妥之处请...熟悉MyEclipse开发环境。 里面带有解决:eclipse Axis2 Codegen plugin报错问题

    Myeclipse 开发web service

    【MyEclipse 开发Web Service】的流程涉及多个关键步骤,包括编写接口和实现类、配置Web服务功能、创建Web Service、测试WSDL以及开发客户端。以下是对这些步骤的详细说明: 1. **编写接口与实现类**: 在开发Web ...

    Axis+MyEclipse6.0+Tomcat5.0开发Web Service实例总结

    Axis+MyEclipse6.0+Tomcat5.0开发Web Service实例总结

Global site tag (gtag.js) - Google Analytics