您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > MyEclipse下开发Web_Service(Axis)
MyEclipse下开发WebService(Axis)本文主要描述如何使用Apache开源项目Axis提供的API来实现WebServices。本文中的提到的例子只为了方便本文的描述而提出,有不妥之处请见谅。本文的读者应有JAVAweb应用开发基础。应该具有看过WSDL,SOAP,XML等的基本规范。熟悉Eclipse+MyEclipse开发环境。本文可以随意转载使用,但是要保留作者的署名。一、环境准备使用Axis来开发Webservices需要准备web服务器,AxisAPI。本文使用的Webcontainer是Tomcat5.5,AxisAPI采用版本2。1.1软件下载准备Tomcat下载地址:标准包:包:(代码生成工具和打包工具):://apache.justdn.org/ws/axis2/tools/1_0/Axis2_Service_Archiver.zipEclipse+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.下面开始搭建WebServices的部署环境。将下载的tomcat报解压缩到一个目录。完成webcontainer的安装。E.将axis2.war包拷贝到tomcat安装目录下的webapps目录中。F.启动Tomcat(windows下为TOMCA_HOME/bin中的startup.bat;Linux,unix环境为startup.sh文件),打开浏览器输入并访问:来查看。(如果没有进行陪孩子文件的修改此地址应该为),如果能看到下面的页面则说明已经安装完成。二、QuickStart环境准备好后,先从一个简单的例子开始。以便对使用Axis来开发Webservices的大致流程有个了解。这个例子就是SayHello,请求端输入一个名字字符串,返回的将是一个问候语。例如:输入了Tom,那么返回的事Hi,Tom.Howareyou?2.1编写WSDLA.启动MyEclipse,新建立一个WebApps(File-New-Project-WebProject),给ProjectName为SayHello,其他保持不改变。B.选择File-New-Other菜单,进入后找到MyEclipse-WebServices并选择WSDL.C.选择“src”目录作为“Enterorselecttheparentfolder”的值,“Filename”值给定为SayHello.wsdl。点击“Next”进入下一步。D.将目标命名空间设置为“”.在生成代码的时候一般以这个命名空间为package的名字,例如:org.tonyzhangcn.ws.sayhello。这些值可以按需要设置。E.点击“Finish”按钮就可以看到MyEclipse提供的WSDL设计器的界面了。可以看到设计器为WSDL默认的添加了一个现操作。即图中的“NewOperation”。现在将其改名为SayHello,如下图:之后点击设计界面中的“Source”Tab来查看其代码。如下:可以看到我们定义了一个SayHello的WebServices,她提供了一个SayHello的方法,她能够接受一个String(事实上是tns:SayHelloRequest对象,她对String进行了封装)类型的输入参数SayHelloRequest并返回一个String(事实上是tns:SayHelloResponse对象,她对String进行了封装)类型的SayHelloResponse结果。更多关于WSDL的信息,请参考W3C的规范文档。?xmlversion=1.0encoding=UTF-8?wsdl:definitionsxmlns:soap=:tns=:wsdl=:xsd==SayHellotargetNamespace=:typesxsd:schematargetNamespace=:elementname=SayHelloResponsetype=xsd:string/xsd:elementname=SayHelloRequesttype=xsd:string//xsd:schema/wsdl:typeswsdl:messagename=SayHelloResponsewsdl:partelement=tns:SayHelloResponsename=SayHelloResponse//wsdl:messagewsdl:messagename=SayHelloRequestwsdl:partelement=tns:SayHelloRequestname=SayHelloRequest//wsdl:messagewsdl:portTypename=SayHellowsdl:operationname=SayHellowsdl:inputmessage=tns:SayHelloRequest/wsdl:outputmessage=tns:SayHelloResponse//wsdl:operation/wsdl:portTypewsdl:bindingname=SayHelloSOAPtype=tns:SayHellosoap:bindingstyle=documenttransport=:operationname=SayHellosoap:operationsoapAction=:inputsoap:bodyuse=literal//wsdl:inputwsdl:outputsoap:bodyuse=literal//wsdl:output/wsdl:operation/wsdl:bindingwsdl:servicename=SayHellowsdl:portbinding=tns:SayHelloSOAPname=SayHelloSOAPsoap:addresslocation=:port/wsdl:service/wsdl:definitions至此WSDL的编写已经完成。2.2从WSDL生成Java代码A.选择菜单“File-New-Other”,从对话框中选取“Axis2Wizards”下面的“Axis2CodeGenerator”.点击“Next”进入下一个页面,保持“GeneratejavasourcecodefromWSDLfile”被选中,点击“Next”进入下一步。B.点击“Browse”来选取存放在src目录下的SayHello.wsdl文件,“Next”进入下一步。设置如下:C.点击“next”进入下一个页面,设置“Outputpath”为本Project的src目录。点击“finish”后代在SayHello项目上按F5刷新就可以看到有代码生成好了。但是能看到一堆红“x”,这是由于没有将Axis2的jar包放入classpath中以及源代码的package不为org.tonyzhangcn.ws.sayhello引起的。下面解决这个问题,首先选择“SayHello”项目,并右击选择“Buildpath-AddExternalArchives..”,选择上面部署在tomcat中的axis2web应用WEB-INF/lib目录中的所有jar包。之后右击“src.org.tonyzhangcn.ws.sayhello”项目,选择“Refactor-rename”,做如下修改,并选择OK完成。这个时候发现test.org.tonyzhangcn.ws.sayhello下面的SayHelloTest.java仍然存在问题。点击此文件中package关键子前面的红“x”,会提示有两个选项,我们选择下面的那个。选择publicclassSayHelloTest前的红“x”,选择第一项。进行完这几个改动之后,生成的代码就没有问题了。其中SayHelloRequest,SayHelloResponse是输入输出参数对象。SayHelloSkeleton是服务端对象,用来编写业务逻辑调用。SayHelloStub是客户端用来定位endpoint(就是发布的WebServices的地址)的类,客户端根据其提供的方法定位Web服务并发起调用SayHelloMessageReceiverInOut是一个实现同步调用的web服务信息转换处理类。Resources目录下的services.xml文件是webservices的描述文件。SayHelloTest是一个客户端的TestCase示例,用户可以根据这个示例来编写自己的客户端调用类。2.3编写业务代码打开SayHelloSKeleton.java文件将其中的实现方法publicorg.tonyzhangcn.ws.sayhello.SayHelloResponseSayHello(org.tonyzhangcn.ws.sayhello.SayHelloRequestparam0){//Todofillthiswiththenecessarybusinesslogicthrownewjava.lang.UnsupportedOperationException();}改为publicorg.tonyzhangcn.ws.sayhello.SayHelloResponseSayHello(org.tonyzhangcn.ws.sayhello.SayHelloRequestrequest){//Todofillthiswiththenecessarybusinesslogictry{SayHelloResponseresponse=newSayHelloResponse();response.setSayHelloResponse(Hi,+request.getSayHelloRequest
本文标题:MyEclipse下开发Web_Service(Axis)
链接地址:https://www.777doc.com/doc-5372549 .html