使用Axis的Eclipse插件开发WebSevice详解和注意事项

在网上看到的由--呼必斯哈拉图--写的"Apache AXIS 开发 Web Services Step By Step",跟着做了一遍。

非常感谢呼必斯哈拉图,写得非常的详细,图文并茂。
但是,我的环境和他文中的不太一样,所以根据自己的环境重写如下。

一、环境准备

1.1软件下载准备
Tomcat 5.5下载地址:
http://tomcat.apache.org/download-55.cgi#5.5.20

Axis War包:
http://ftp.wayne.edu/apache/ws/axis2/1_1_1/axis2.war

Axis Eclipse plug-in(代码生成工具和打包工具):
http://apache.justdn.org/ws/axis2/tools/1_1_1/axis2-eclipse-codegen-wizard.zip
http://apache.justdn.org/ws/axis2/tools/1_1_1/axis2-eclipse-service-archiver-wizard. zip

Eclipse 3.2:
http://www.eclipse.org/

MyEclipse5.5M1
http://www.myeclipseide.com/

1.2安装

A.首先搭建开发环境,将下载的 Eclipse 解压缩到一个目录,D:\eclipse-SDK-3.2-win32。
B.将下载到的 Axis 的两个 plug-in解压缩到D:\ Axis-Plugin-Dir\eclipse\plugins目录下

C.在eclipse目录下创建D:\eclipse-SDK-3.2-win32\eclipse\links,新建文件名为:axis-eclipse-plugin.link

内容为:
path=D:\\Axis-Plugin-Dir


D.安装 MyEclipse5.5M1,将eclipse目录指向D:\eclipse-SDK-3.2-win32,删除D:\eclipse-SDK-3.2-win32\eclipse\configuration下的org.eclipse.update目录。然后启动 MyEclipse,选择“ File->New->Other”可以看到如下的两个界面
1、Axis2 plugins
 


 

2、Web Servieces plugins



E.下面开始搭建Web Services的部署环境。

将下载的tomcat5.5解压缩到一个目录D:\Tomcat5.5。

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

G.启动Tomcat(D:\Tomcat5.5\bin\startup.bat),打开浏览器输入并访问:http://127.0.0.1:8080/axis2 来查看,结果如下图,表示axis2已经工作正常。


二、快速开始

2.1创建webApps项目

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

2.2创建WSDL文件

A.选择File->New-Other菜单,进入后找到 MyEclipse->Web Services并选择 WSDL.如下图:

B.点击下一步按钮,显示如下图:




C.选择“ src”目录作为“ Enter or select the parent folder”的值,“ File name”值给定为 SayHello.wsdl。

D.下一步》所有界面内容取默认值,Finish!

E.显示 WSDL设计器的界面如下:


使用Axis的Eclipse插件开发WebSevice详解和注意事项_第1张图片

F.修改图中标红色的部分:
修改图中的NewOperation为SayHello;
修改input中parameters为SayHelloRequest;
修改output中parameters为SayHelloResponse;
修改完后如下图:
使用Axis的Eclipse插件开发WebSevice详解和注意事项_第2张图片


 
红色框内为变化的内容,WSDL文件修改完毕。

2.3 WSDL生成 Java代码

A.选择菜单“ File->New->Other”,从对话框中选取“ Axis2 Wizards”下面的“ Axis2 Code Generator”.点击“ Next”
使用Axis的Eclipse插件开发WebSevice详解和注意事项_第3张图片


 
B.进入下一个页面,保持“ Generate java source code from WSDL file”被选中,点击“ Next”进入下一步。
C.点击“ Browse”来选取存放在 src目录下的 SayHello.wsdl文件,“ Next”进入下一步。
D.首先生成客户端代码和测试代码,设置如下:


E.下一步后,选择SayHello\src目录,如下图:


Finish !

F.重复从A到C的步骤,然后生成服务端代码,设置如下:
使用Axis的Eclipse插件开发WebSevice详解和注意事项_第4张图片



 
 

后面同E。

G.结束后,刷新项目,如图:
 


 
这是由于没有将Axis2 jar包放入 class path 中以及源代码的 package不为 org.example.www.sayhello引起的。

H.修改包名为org.example.www.sayhello并从tomcat中的 axis2 web应用 WEB-INF/lib目录中加载所有 jar包到项目的classpath中。

I.在SayHelloTest.java 中引入 junit包。

2.4 编写业务代码

打开 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)
{
      try
    {
             SayHelloResponse response = new SayHelloResponse();
             response.setOut("Hi,"+request.getIn()+".How are you?");
             return response;
    }catch(UnsupportedOperationException e)
       {
           throw e;
   }
}

2.5打包

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文件。

D.点击“ Next”,将记入最后一个页面,此处有两个选项,一个是输出目录一个是处处文件名称。这里的输出文件名称给的是 SayHello。点击“ Finish”完成。

2.6部署

A.将打包好的文件 SayHello.jar拷贝到 Tomcat中已经部署的 Axis2应用的 WEB-INF/services目录下面。

B.重新启动 Tomcat

C.打开浏览器,输入 http://127.0.0.1:8080/axis2 ,并点击其中的“ services”链接可以看到 SayHello已经被部署。点击 SayHello提供的连接可以看到与之对应的 WSDL。

2.7 调用测试
A.修改 SayHelloTest.java文件中的方法
testSayHello 的内容为:

public void testSayHello() throws java.lang.Exception {
  String url=" http://localhost:8080/axis2/services/SayHello ";
  org.example.www.sayhello.SayHelloStub stub = new org.example.www.sayhello.SayHelloStub(url);
  org.example.www.sayhello.SayHelloStub.SayHello request = (org.example.www.sayhello.SayHelloStub.SayHello) getTestObject(org.example.www.sayhello.SayHelloStub.SayHello.class);
  request.setIn("Teamlet");
  System.out.println(stub.SayHello(request).getOut());
  assertNotNull(stub.SayHello(request));
 }

  从菜单中选择“ Run >Run as->JUnit Test 完成测试!

 

 

Axis2 Eclipse plugin: Code Generator 在Finish 时产生Exception: java.lang.reflect.InvocationTargetException
[版本]
Eclipse 3.2
Axis2 1.4

[问题原因]
主要的问题在于 Code Generator plugin 内缺少了 backport-util-concurrent-3.1.jar 包

[解决方案]
- 关闭 Eclipse
- copy %AXIS2_HOME%\lib\backport-util-concurrent-3.1.jar 到下列 folder
%ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\lib

- 注册此 jar 包: 編輯 %ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\plugin.xml , 在 <runtime> 內加入下面的字串
<library name="lib/backport-util-concurrent-3.1.jar">
<export name="*"/>
</library>

- 执行 Eclipse 即可

- 若问题仍存在, 尝试改变Eclipse 使用的 JRE, 换成 JAVA 6
- 使用 JRE 1.6 启动 Eclipse 后, 若仍有问题, 试着加入 -clean 参数启动 Eclipse, 清除 osig cache:
eclipse.exe -vm "c:\java\jre1.6.0_05\bin\java.exe" -clean -console -consoleLog -debug -vmargs -Xmx384M

- 关闭 Eclipse 后, 再以一般方式启动 Eclipse, 应可解决问题

[參考]
Error while using Axis2 Code Generator Plugin for Eclipse
http://www.nabble.com/Error-while-using-Axis2-Code-Generator-Plugin-for-Eclipse-td17147595.html
http://web-latte.blogspot.com/2008/05/axis2-eclipse-plugin-code-generator.html

 

你可能感兴趣的:(apache,eclipse,tomcat,Web,MyEclipse)