在网上看到的由
--
呼必斯哈拉图
--
写的
"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>
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>
<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>
<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/>
<http://www.eclipse.org/>
MyEclipse5.5M1
:
<http://www.myeclipseide.com/>
<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
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
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 。
将下载的 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. 如下图:
启动 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 文件修改完毕。
修改图中的 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. 首先生成客户端代码和测试代码,设置如下:
C. 点击" Browse' 来选取存放在 src 目录下的 SayHello.wsdl 文件," Next' 进入下一步。
D. 首先生成客户端代码和测试代码,设置如下:
E.
下一步后,选择
SayHellosrc
目录,如下图:
Finish !
F.
重复从
A
到
C
的步骤,然后生成服务端代码,设置如下:
后面同 E 。
后面同 E 。
G.
结束后,刷新项目,如图:
这是由于没有将 Axis2 的 jar 包放入 class path 中以及源代码的 package 不为 org.example.www.sayhello 引起的。
H. 修改包名为 org.example.www.sayhello 并从 tomcat 中的 axis2 web 应用 WEB-INF/lib 目录中加载所有 jar 包到项目的 classpath 中。
这是由于没有将 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 文件其中的方法如下:
打开 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();
}
{
// 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 {
{
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 的内容为:
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));
}
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
完成测试!