在网上看到的由
--
呼必斯哈拉图
--
写的
"Apache AXIS
开发
Web Services Step By Step",
跟着做了一遍。
非常感谢呼必斯哈拉图,写得非常的详细,图文并茂。
但是,我的环境和他文中的不太一样,所以根据自己的环境重写如下。
一、环境准备
1.1
软件下载准备
Tomcat 5.5
下载地址:
http://tomcat.apache.org/download-55.cgi#5.5.20 <http://tomcat.apache.org/download-55.cgi>
Axis War
包:
<http://ftp.wayne.edu/apache/ws/axis2/1_1_1/axis2.war>
<http://ftp.wayne.edu/apache/ws/axis2/1_0/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 <http://apache.justdn.org/ws/axis2/tools/1_0/Axis2_Service_Archiver.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-Direclipseplugins
目录下。
C.
在
eclipse
目录下创建
D:eclipse-SDK-3.2-win32eclipselinks
,新建文件名为
:axis-eclipse-plugin.link
内容为:
path=D:Axis-Plugin-Dir
D.
安装
MyEclipse5.5M1,
将
eclipse
目录指向
D:eclipse-SDK-3.2-win32
,删除
D:eclipse-SDK-3.2-win32eclipseconfiguration
下的
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.5binstartup.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
设计器的界面如下:
F.
修改图中标红色的部分:
修改图中的
NewOperation
为
SayHello;
修改
input
中
parameters
为
SayHelloRequest;
修改
output
中
parameters
为
SayHelloResponse;
修改完后如下图:
红色框内为变化的内容,
WSDL
文件修改完毕。
2.3
从
WSDL
生成
Java
代码
A.
选择菜单"
File->New->Other
',从对话框中选取"
Axis2 Wizards
'下面的"
Axis2 Code Generator
'
.
点击"
Next
'
B.
进入下一个页面,保持"
Generate java source code from WSDL file'
被选中,点击"
Next'
进入下一步。
C.
点击"
Browse'
来选取存放在
src
目录下的
SayHello.wsdl
文件,"
Next'
进入下一步。
D.
首先生成客户端代码和测试代码,设置如下:
E.
下一步后,选择
SayHellosrc
目录,如下图:
Finish !
F.
重复从
A
到
C
的步骤,然后生成服务端代码,设置如下:
后面同
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.
SayHelloRequest
request = (org.example.www.sayhello.SayHelloStub.
SayHelloRequest
) getTestObject(org.example.www.sayhello.SayHelloStub.
SayHelloRequest
.class);
request.setIn("Teamlet");
System.out.println(stub.SayHello(request).getOut());
assertNotNull(stub.SayHello(request));
}
从菜单中选择"
Run
-
>Run as->JUnit Test
完成测试!