一、环境准备
使用Axis来开发Web services 需要准备 web 服务器,Axis API。本文使用的Web container 是Tomcat5.5, Axis API 的版本为Axis2_1.1.1。
1.1软件下载准备
Tomcat下载地址:http://tomcat.apache.org/download-55.cgi#5.5.20
Axis标准包:
http://apache.justdn.org/ws/axis2/1_1_1/axis2-1.1.1-src.zip
Axis War包:
http://apache.justdn.org/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+MyEclipse:可以到官方网站下载(本文为3.2+5.0GA)
1.2安装
1》.首先搭建开发环境,需要将下载到的Eclipse解压缩到一个目录。
2》.将下载到的Axis 的两个plug-in解压缩到Eclipse安装目录下的plug-in子目录。
3》.安装MyEclipse5.0GA。然后启动MyEclipse,并选择“File->New->Other”可以找到下面的这些Wizards,这些将是本文中用到的很重要的工具。
4》.下面开始搭建Web Services的部署环境。将下载的tomcat报解压缩到一个目录。完成web container 的安装。
5》.将axis2.war包拷贝到tomcat安装目录下的webapps目录中。
6》.启动Tomcat(windows 下为TOMCA_HOME/bin中的startup.bat;Linux,unix环境为startup.sh文件),打开浏览器输入并访问:http://ip:8080/axis2(或2http://localhost:8080/axis)来查看,如果能看到下面的页面则说明已经安装完成。
二、进入开发
2.1 建立要发布的WebService
1. 在Eclispse中添加一个用户库命名为axis2,将axis2/lib下的包均添加进来。
2. 建立一个JavaProject命名为AccountService,将axis2用户库加入到build path中。
3. 现在开始编写要发布的WebSevice,在src中建包account,建立AccountOper类如下:
package account;
public class AccountOper {
private static int[] fund = {10000, 500, 700, 5800};
public static int accountID = 0;//in {0,1,2}
public boolean setAccountID( int id ) {
if(id < 0 || id > fund.length)
return false;
this.accountID = id;
return true;
}
public boolean checkInput(int money)
{
if (money > fund[accountID]) {
return false;
} else {
return true;
}
}
//deposit
public int deposit(int money)
{
fund[accountID] = fund[accountID] + money;
return fund[accountID];
}
//withdraw
public int withdraw(int money) {
if (checkInput(money)) {
fund[accountID] = fund[accountID] - money;
}
return fund[accountID];
}
public int getAccount() {
return fund[accountID];
}
}
2.2 发布WebService
1. 在META-INF下建立services描述文件services.xml如下:
<service name="AccountService">
<parameter name="ServiceClass"
locked="false">account.AccountOper</parameter>
<operation name="setAccountID">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
<operation name="checkInput">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
<operation name="deposit">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
<operation name="withdraw">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
<operation name="getAccount">
<messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
</operation>
</service>
2. 打包要发布的Service,Eclipse中New --> File --> Other --> Axis2 wizards -->
Axis2 Services Archiver,按照向导选择刚建立的类编译后的class文件和services.xml文件。
1》、选择class文件目录,注意,不是java源文件,而是WEB-INF/classes目录,
2》、连按两次下一步,选择service.xml文件,
3》、按下一步,输入service文件的保存路径和文件名,完成。
这里将保存路径设为D盘,文件名为AccountService.jar,按完成保存成功,然后修改后缀为aar(也可不修改),将其拷贝到Tomcat 5.5/webapps/axis2/WEB-INF/services目录下,重新打开http://localhost:8080/axis2/services/listService就会发现AccountService已经发布成功,现在就可以应用这个Web服务了。
2.3 测试
6. Eclipse中New --> File --> Other --> Axis2 wizards --> Axis2 Code Generator,按向导通过java source文件,即AccoutOper.class生成WSDL文件。这步其实可以省略,当webservice发布后可通过访问http://192.168.1.213:8080/axis2/services/AccountService?wsdl就可以得到wsdl文件,然后根据此URL就可以生成客户端代码,这里主要想演示一下用Axis2 Code Generator工具根据java source文件如何生成WSDL文件。
1》选择Generate a WSDL from a Java source file,按下一步
2》、填入class文件的包及文件名,我这是account.AccountOper,然后按Add Folder增加AccountOper.class的所在目录路径,按Test Class Loading..按钮测试是否成功装载这个类文件,若未装载成功请检查包名、类名和路径是否正确。
3》、按下一步,这里的参数设置我们不用管它,用默认的就行了。
4》、选择wsdl文件的保存位置及确定wsdl文件的文件名AcountServices.wsdl,按完成,WSDL文件生成成功。
7、通过WSDL文件生成AccountServiceCallbackHandler.java和AccountServiceStub.java,可以重新建立Project,我在做的过程中为了方便仍利用刚才建立的Project.
1》、New --> File --> Other --> Axis2 wizards --> Axis2 Code Generator
2》、选择Generate Java source code from a WSDL file,按下一步
3》、按Browse选择wsdl文件,按下一步
4》、使用默认的配置,按下一步。
5》、选择生成文件的存放路径,完成AccountServiceCallbackHandler.java和AccountServiceStub.java的生成。
6》、在工程目录按F5刷新,就可以看到刚生成的文件,但提示都有错误,这是因为包名不一样。
解决方法是将生成的两个文件直接移动到account包下,如图:
8. 编写服务测试程序AccountTest.java如下:
package account;
public class AccountTest {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String endpoint = "http://localhost:8080/axis2/services/AccountService";
AccountServiceStub stub = new AccountServiceStub(endpoint);
AccountServiceStub.SetAccountID set = new AccountServiceStub.SetAccountID();
set.setId( 2 );
stub.setAccountID( set );
AccountServiceStub.GetAccountResponse get = stub.getAccount();
System.out.println( "Current: " + get.get_return() );
AccountServiceStub.Deposit dep = new AccountServiceStub.Deposit();
dep.setMoney( 120 );
AccountServiceStub.DepositResponse depRes = stub.deposit( dep );
System.out.println( "After Deposit 120: " + depRes.get_return() );
AccountServiceStub.Withdraw draw = new AccountServiceStub.Withdraw();
draw.setMoney( 50 );
AccountServiceStub.WithdrawResponse drawRes = stub.withdraw( draw );
System.out.println( "After Withdraw 50: " + drawRes.get_return() );
AccountServiceStub.GetAccountResponse getLast = stub.getAccount();
System.err.println( "At last: " + getLast.get_return() );
}
}
运行结果如下:
测试成功
三、在局域网其他客户机调用
以下介绍在局域网客户端调用上面发布的AccountService。为了不受杀毒软件及防火墙的影响,测试时我们把杀毒软件及防火墙关闭。
1、新建一个web project
2、New --> File --> Other --> Axis2 wizards --> Axis2 Code Generator,按下一步
3、选择Generate Java source code from a WSDL file,按下一步
4、在文本框中填入http://192.168.1.213:8080/axis2/services/AccountService?wsdl,按下一步
5、这里都使用默认的设置,按下一步
6、选择输出文件的存放路径,我选择输出在工程的src目录下,按完成按钮,客户端代码生成完毕。
7、刷新一下项目,就可以看到刚生成的客户端文件了,AccountServiceStub.java和AccountServiceCallbackHandler.java,但都有错误,别急,这是生成的包名的问题,我们稍微改一下:把包名src.account改成account就行了。
8、写测试类,和在本机测试的一样。
package account;
public class AccountTest {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String endpoint = "http://localhost:8080/axis2/services/AccountService";
AccountServiceStub stub = new AccountServiceStub(endpoint);
AccountServiceStub.SetAccountID set = new AccountServiceStub.SetAccountID();
set.setId( 2 );
stub.setAccountID( set );
AccountServiceStub.GetAccountResponse get = stub.getAccount();
System.out.println( "Current: " + get.get_return() );
AccountServiceStub.Deposit dep = new AccountServiceStub.Deposit();
dep.setMoney( 120 );
AccountServiceStub.DepositResponse depRes = stub.deposit( dep );
System.out.println( "After Deposit 120: " + depRes.get_return() );
AccountServiceStub.Withdraw draw = new AccountServiceStub.Withdraw();
draw.setMoney( 50 );
AccountServiceStub.WithdrawResponse drawRes = stub.withdraw( draw );
System.out.println( "After Withdraw 50: " + drawRes.get_return() );
AccountServiceStub.GetAccountResponse getLast = stub.getAccount();
System.err.println( "At last: " + getLast.get_return() );
}
}
运行结果:
和在本机测试一样,调用成功!
官方文檔非常多及齊全, 若想進一步了解, 需要花更長的時間:
http://ws.apache.org/axis2/1_0/index.html
Axis2 的文檔及教學非常充足. 官方文檔如下連結:
http://ws.apache.org/axis2/1_0/index.html
Axis2 官方的安裝教學:
http://ws.apache.org/axis2/1_0/installationguide.html
Axis2 用戶指南:
http://ws.apache.org/axis2/1_0/userguide.html
Axis2 WEB Administration 介面的使用教學:
http://ws.apache.org/axis2/1_0/webadminguide.html
Axis2 的設定文檔:
http://ws.apache.org/axis2/1_0/axis2config.html
AXIOM (Axis Object Model) 教學:
http://ws.apache.org/axis2/1_0/OMTutorial.html
Axis2 Eclipse plugin 教學:
http://ws.apache.org/axis2/tools/1_0/eclipse/wsdl2java-plugin.html
分享到:
相关推荐
2. **Axis框架**:Axis是Apache软件基金会的一个项目,最初由IBM开发。它提供了SOAP绑定、服务部署、客户端生成和WSDL(Web服务描述语言)处理等功能。Axis简化了Web服务的开发过程,让Java开发者能够快速实现服务化...
#### 编译Axis2 Sample 1. **进入Samples目录** ```bash cd /apache/axis2c-src-1.6.0/samples/ ``` 2. **配置编译选项** ```bash ./configure --prefix=${AXIS2C_HOME} --with-axis2=${AXIS2C_HOME}/...
1. **示例工程**:在提供的"sample"目录下,包含了Axis2的示例服务和客户端代码。这些代码展示了如何创建、部署和调用Web服务。 2. **说明文档**:文档通常会解释每个示例的目的,以及如何运行它们。确保阅读并遵循...
Axis2 入门及简单例子 Axis2 是一个基于 Java 的 Web 服务框架,它提供了一个灵活、可扩展、可靠的方式来创建、部署和管理 Web 服务。Axis2 是 Apache 软件基金会的一个开源项目,是基于 SOAP 和 WSDL 的 Web 服务...
### Axis2 WebService 开发指南知识点详述 #### 一、Axis2 WebService 技术概览 **Axis2** 是Apache的一个开源项目,旨在提供一个高性能、灵活且可扩展的Web服务框架,用于实现基于SOAP协议的Web服务。与前代产品*...
【Axis2 WebService 开发指南】是关于使用Apache Axis2框架创建和操作Web服务的教程。Axis2是Axis1的升级版,提供了更多的功能和改进的性能。在开始之前,你需要下载并安装必要的开发工具,包括Axis2的jar包和...
conf文件夹包含了Axis2的配置文件,lib文件夹包含了运行所需的依赖库,repository文件夹用于存放发布过的Axis服务和文件,而sample文件夹则包含了示例项目。 为了部署Axis2项目,通常需要将axis2.war文件放置在...
6. **ws-sample**:这个文件名可能是解压后的目录,包含了 Axis2 示例的所有文件,包括服务接口、实现、配置文件、测试脚本等。 7. **源码分析**:博客可能深入解析了示例代码,解释了每个部分的作用,这对于初学者...
Axis2 的下载文件中包含 bin、conf、lib、repository、sample 和 webapp 等文件夹。其中,bin 文件夹包含了 axis2 的常用工具,如 wsdl2java 工具和 java2wsdl 工具;conf 文件夹包含了 axis2 的配置文件;lib ...
conf 目录下存放了 Axis2 的配置文件,lib 目录包含运行所需的所有依赖库,repository 目录用于存储发布的服务和文件,sample 目录则包含示例代码。 #### 1.4 部署 Axis2 将下载的 `axis2.war` 文件放入 Tomcat 的...
当我们谈论“Spring + Axis2 开发 WebService”时,这通常指的是使用Spring框架与Apache Axis2工具来创建、部署和消费基于SOAP(Simple Object Access Protocol)的Web服务。以下是关于这个主题的详细知识点: 1. *...
【Axis2初学者教程】 Apache Axis2是一款强大的Web服务框架,用于构建和部署Web服务。它是Axis1.x的升级版,提供了许多改进和新特性,包括更好的性能、模块化架构和更灵活的服务部署选项。本教程将引导初学者了解...
### Axis2 WebService 开发指南 #### 一、准备工作 **1.1 下载与配置** 为了能够顺利地进行Axis2 WebService的开发工作,首先需要完成必要的软件环境搭建。 - **下载Axis2相关jar包**:访问[Axis官方网站]...
### Axis2与WAS7集成知识点详解 #### 一、将原生Axis2.war部署到WAS7上 在本部分中,我们将详细介绍如何将原生的Axis2 WAR包部署到IBM WebSphere Application Server 7 (WAS7) 上。 1. **下载Axis2** - 首先...
### Axis2 开发WebService心得 在进行WebService的开发过程中,特别是在使用Axis2框架时,往往会遇到各种挑战与难题。本文将结合实践经验,分享在使用Axis2进行WebService开发时的一些心得和解决方案,希望能够帮助...
Axis2的bin目录包含常用工具,如wsdl2java和java2wsdl,conf目录存放配置文件,lib包含运行所需依赖库,repository用于存储发布的服务和文件,sample提供示例,webapp则包含Web应用和JSP页面。 4. 部署Axis2 将axis...