分享
 
 
 

用Axis开发Web Services

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

?

Axis简介

Axis是Apache组织推出的SOAP引擎,Axis项目是Apache组织著名的SOAP项目的后继项目,目前最新版本是采用Java开发的1.1版本。Axis v1.1软件包可以从http://ws.apache.org/axis/dist/1_1/下载得到。

??? 下面以一个具体的实例介绍AXIS开发Web Service。

目的?

?? 了解WebService的工作原理,实现一个Web Service。这个service提供以下服务:增加存款、减少存款和返回存款余额。

平台

? ??? j2sdk1.4+Tomcat5.0+AXIS

步骤

1.???????? 安装J2SDK

?????? D:\j2sdk1.4

2.???????? 安装 Jakarta-Tomcat-5.0

?????? D:\Tomcat

3.???????? 安装AXIS

?????? 只需将下载的Axis软件包解压缩,将其中的“webapps”目录下的“axis”目录整个拷贝到Tomcat安装目录下的“webapps”目录下

?????? D:\Tomcat\webapps\axis

Axis的配置

?????? 需要配置的系统变量如下表所示:

?????? CATALINA_HOME

?????? D:\Tomcat

?????? AXIS_HOME

?????? %CATALINA_HOME%\webapps\axis

?????? AXIS_LIB

?????? %AXIS_HOME%\lib

??????

?????? AXISCLASSPATH

?????? %AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar; ?????? %AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar; ???? %AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar; ?????? %AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar

也可以直接将axis软件包中“lib”目录下的所有.jar文件加入到系统环境变量CLASSPATH中即可。D:\Tomcat\webapps\axis\WEB-INF\lib\axis.jar;D:\Tomcat\webapps\axis\WEB-INF\lib\axis-ant.jar;D:\Tomcat\webapps\axis\WEB-INF\lib\commons-discovery.jar;D:\Tomcat\webapps\axis\WEB-INF\lib\commons-logging.jar;D:\Tomcat\webapps\axis\WEB-INF\lib\jaxrpc.jar;D:\Tomcat\webapps\axis\WEB-INF\lib\log4j-1.2.8.jar;D:\Tomcat\webapps\axis\WEB-INF\lib\saaj.jar;D:\Tomcat\webapps\axis\WEB-INF\lib\wsdl4j.jar

4.???? 访问http://hostname:8080/axis/并测试网页上的链接是否工作正常

5.???????? 服务的发布

?

Axis提供了两种服务发布方式,一种是即时发布(Instant Deployment),一种是定制发布(Custom Deployment)。

对即时发布的支持是Axis的特色之一,使用即时发布使用户只需有提供服务的Java类的源代码,即可将其迅速发布成Web服务。每当用户调用这类服务的时候,Axis会自动进行编译,即使服务器重启了也不必对其做任何处理,使用非常简单快捷。使用即时发布首先需要一个实现服务功能的Java源文件,将其扩展名改为.jws(Java Web Service的缩写),然后将该文件放到“……\webapps\axis”目录下即可。

??? 即时发布是一项令人激动的技术,它使Web服务的开发变得如此简单;然而即时发布并不总是最好的选择,比?如有些应用系统是第三方提供的,我们没有购买源代码,只有.class文件,但我们又希望将这个应用系统的一些功能对外发布成Web服务,使其能够在更大范围内产生作用,这个时候即时发布技术就无能为力了。此外,即时发布技术并不灵活,无法进行更多的服务配置,这使得它并不能满足一些特定系统的需求。

因此,Axis提供了另一种服务发布方式,这就是定制发布,下面以此方法为主做以详细介绍。

?

创建自己的WebService服务类

//bank.java

package webservice.bank;

/**

* @author Ray

*/

?

public class Bank{

?????? public static double balance = 100;

??????

?????? public synchronized double balance() {

????????????? ?return balance;

?????? }

??????

?????? public synchronized double deposit ( double amount){

????????????? //实现存款

????????????? balance = balance + amount;

????????????? return balance;

?????? }//deposit()

??????

?????? public synchronized double withdraw( double amount){

????????????? //实现取款

????????????? if (balance = amount)

???????????????????? balance = balance - amount;

????????????? else

???????????????????? System.out.println("caught");

????????????? return balance;

?????? }//withdraw()

??????

??????

}

将其编译成.class文件,放置到“……\webapps\axis\WEB-INF\classes\webservice\bank”目录下

6.???????? 创建WSDD文件设置对外提供的服务信息

这个文件负责描述服务的名称、入口等信息,其内容如下:deploy.wsdd

7.???????? 部署(发布)你的WebService

“……\webapps\axis\WEB-INF\classes\webservice\bank”目录下

java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd

8.???????? 访问http://127.0.0.1:8080/axis/services/Bank?wsdl的链接,查看你的WebService是否发布成功

?

9.???????? 编写客户端代码(可以使用AXIS附带的API)

?????? 代码略详见NewTest.java

?????? 其中,org.apache.axis.client.Call和org.apache.axis.client.Service是两个比较常用的类,一般的客户端程序欲访问一个Web Service时,都要生成一个客户端的Service对象和Call对象,在访问服务之前,首先要对Call对象设置相应的参数,包括服务的位置、操作名、入口参数、返回值类型等,最后调用Call对象的invoke方法访问服务。

????????????? …………

????????????? Service service = new Service();

????????????? Call calld = ( Call ) service.createCall();

????????????? Double d1,d2;

????????????? //设置访问点

????????????? calld.setTargetEndpointAddress( "http://localhost:8080/axis/services/Bank" );

????????????? //设置操作名????????

????????????? callresult.setOperationName( "balance" );

????????????? callresult.setReturnType( XMLType.XSD_DOUBLE );

????????????? System.out.println("Welcome to Bank");

????????????? System.out.println( "您的余款: " + callresult.invoke( new Object[] {} ) + " 元 " );

????????????? …………

?

10.???????? 运行客户端程序,查看输出结果

运行客户端程序NewJava

命令格式:deposit(d)/withdraw(w)? double or Quit(q)

Java NewJava

存钱 输入格式? 如存入100元:d 100

取钱 输入格式? 如取出20元:w 20

当余额不足时:

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有