在eclipse用axis插件开发websservice步骤.docx

上传人:b****4 文档编号:3998340 上传时间:2022-11-27 格式:DOCX 页数:13 大小:336.12KB
下载 相关 举报
在eclipse用axis插件开发websservice步骤.docx_第1页
第1页 / 共13页
在eclipse用axis插件开发websservice步骤.docx_第2页
第2页 / 共13页
在eclipse用axis插件开发websservice步骤.docx_第3页
第3页 / 共13页
在eclipse用axis插件开发websservice步骤.docx_第4页
第4页 / 共13页
在eclipse用axis插件开发websservice步骤.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

在eclipse用axis插件开发websservice步骤.docx

《在eclipse用axis插件开发websservice步骤.docx》由会员分享,可在线阅读,更多相关《在eclipse用axis插件开发websservice步骤.docx(13页珍藏版)》请在冰豆网上搜索。

在eclipse用axis插件开发websservice步骤.docx

在eclipse用axis插件开发websservice步骤

说明及约定:

   本文主要描述如何使用Apache开源项目Axis提供的API来实现WebServices。

本文中的提到的例子只为了方便本文的描述而提出,有不妥之处请见谅。

   本文的读者应有JAVAweb应用开发基础。

应该具有看过WSDL,SOAP,XML等的基本规范。

熟悉Eclipse+MyEclipse开发环境。

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

一、环境准备

使用Axis来开发Webservices需要准备web服务器,AxisAPI。

本文使用的Webcontainer是Tomcat5.5,AxisAPI采用版本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

AxisWar包:

http:

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

AxisEclipseplug-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.下面开始搭建WebServices的部署环境。

将下载的

         tomcat报解压缩到一个目录。

完成webcontainer

          的安装。

       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),如果能看到下面的页面则说明已经安装完成。

 

 

 

二、QuickStart

环境准备好后,先从一个简单的例子开始。

以便对使用Axis来开发Webservices的大致流程有个了解。

这个例子就是SayHello,请求端输入一个名字字符串,返回的将是一个问候语。

例如:

输入了Tom,那么返回的事Hi,Tom.Howareyou?

2.1编写WSDL

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

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

C.选择“src”目录作为“Enterorselecttheparentfolder”的值,“Filename”值给定为SayHello.wsdl。

点击“Next”进入下一步。

 

 

D.将目标命名空间设置为“http:

//ws.tonyzhangcn.org/SayHello/”.在生成代码的时候一般以这个命名空间为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.0"encoding="UTF-8"?

>

definitionsxmlns:

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/">

types>

schematargetNamespace="http:

//ws.tonyzhangcn.org/SayHello/">

elementname="SayHelloResponse"type="xsd:

string"/>

elementname="SayHelloRequest"type="xsd:

string"/>

schema>

types>

messagename="SayHelloResponse">

partelement="tns:

SayHelloResponse"name="SayHelloResponse"/>

message>

messagename="SayHelloRequest">

partelement="tns:

SayHelloRequest"name="SayHelloRequest"/>

message>

portTypename="SayHello">

operationname="SayHello">

inputmessage="tns:

SayHelloRequest"/>

outputmessage="tns:

SayHelloResponse"/>

operation>

portType>

bindingname="SayHelloSOAP"type="tns:

SayHello">

bindingstyle="document"transport="http:

//schemas.xmlsoap.org/soap/http"/>

operationname="SayHello">

operationsoapAction="http:

//ws.tonyzhangcn.org/SayHello/NewOperation"/>

input>

bodyuse="literal"/>

input>

output>

bodyuse="literal"/>

output>

operation>

binding>

servicename="SayHello">

portbinding="tns:

SayHelloSOAP"name="SayHelloSOAP">

addresslocation="http:

//www.example.org/"/>

port>

service>

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)

{

//Todofillthiswiththenecessarybusinesslogic

thrownewjava.lang.UnsupportedOperationException();

}

 

改为

publicorg.tonyzhangcn.ws.sayhello.SayHelloResponseSayHello(org.tonyzhangcn.ws.sayhello.SayHelloRequestrequest)

{

//Todofillthiswiththenecessarybusinesslogic

try

{

SayHelloResponseresponse=newSayHelloResponse();

response.setSayHelloResponse("Hi,"+request.getSayHelloRequest()+".Howareyou?

");

returnresponse;

}catch(UnsupportedOperationExceptione)

{

throwe;

}

}

2.4打包

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

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

C.选择WSDL文件所在目录,此处为src目录下的SayHello.wsdl文件。

“Next”,再“Next”。

选择services.xm文件,本文应该是生成再src/resources下面的services.xml文件。

之后选取“Generatetheservices.xmlautomatically”,然后再点击一下使其变为非选中状态,之后点击“Back”按钮,再点击一次“Next”。

(注意:

这里本应该不是这么来回折腾的,但是我的机器上只有这样操作finish按钮才能生效。

怀疑这是一个bug,如果读到此文的用户没有这种情况,忽略此提示)

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的内容为:

publicvoidtestSayHello()throwsjava.lang.Exception

{

Stringurl="http:

//localhost:

8080/axis2/services/SayHello";

org.tonyzhangcn.ws.sayhello.SayHelloStubstub=neworg.tonyzhangcn.ws.sayhello.SayHelloStub(url);//the

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

request.setSayHelloRequest("tonyzhangcn");

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

//todoFillintheparam14here

assertNotNull(stub.SayHello(request));

}

B.从菜单中选择“Run->Runas->JUnitTest”。

    可以看到web服务已经正确的返回了结果。

那么,不用TestCase类可以调用WebServices吗?

答案是肯定的,我们可以随便些一个带有main方法的类,并仿照SayHelloTest.java中的testSayHello()方法就可以达到调用WebServices的目的了。

 

在我实际操作工程中,还遇到了两个问题:

一个是缺少xalan包中的jar文件,

解决办法:

从官网下载,添加进lib中就好了

一个是在自动产生的JUnitTest类中有两个方法,都要实现,

解决办法:

可以去掉一个方法。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1