一、准备工作
首先需要下载axis2的相关jar包,下载地址:
axis2-1.6.2-war.zip http://download.csdn.net/detail/flyhigh200703/5192812
axis2-1.5.3-bin.zip
下载下来的axis2的依赖库,其中有一个axis2-1.5.3-bin.zip的库文件,目录结构如下:
bin文件夹是axis2的常用工具,其中有将wsdl文件转换成客户端调用的wsdl2java工具及将java转换成wsdl文件的工具
conf是axis2的配置文件
lib运行所要的依赖库
repository是发布过的axis服务和文件
sample是示例
webapp是web文件和jsp页面等。
将下载下来的axis2-1.6.2-war.zip中的axis2.war文件放到Tomcat的安装目录webapp下,启动Tomcat,就会自动的将war文件解压,生成axis2文件夹,之后,在浏览器中输入http://localhost:8080/axis2 你就可以看到如下结果
下面,我们来使用axis2在Eclipse中创建一个简单的java web project
注:之前我的Eclipse中不能创建Web Project,网上说需要下载J2EE版本的Eclipse,网址如下:http://www.eclipse.org/downloads/
一、Java服务端(发布WebService) 新建一个Java Project
新建一个class,代码如下:
import java.util.Random; public class HelloWorldService { public String sayHello(String name) { return name + " say: hello [axis2]"; } public int getAge(int i) { return i + new Random().nextInt(100); } }
二、Flex4客户端 这个客户端是我自己摸索着写出来的,我对于java端返回的数据在flex中显示有些不明白,比如从java代码可以看出,getAge方法返回的是int类的数据,我在flex中将定义返回的数据类型是number类型,而我又需要在Labe上显示,Label的text属性是String类型,所以我就在Label显示的时候将Number进行了.toString()转换。
在Flex4中新建一个flex项目,取名AxisClient,在主程序文件AxisClient.mxml中输入如下代码:
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" pageTitle="AxisClient01"> <fx:Script> <![CDATA[ import mx.controls.Alert; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; [Bindable] private var mName:String; [Bindable] private var mAge:Number; private function operation1_resultHandler(event:ResultEvent):void { // Todo Auto-generated method stub mName = axisclient01.sayHello.lastResult; } protected function operation1_faultHandler(event:FaultEvent):void { // Todo Auto-generated method stub Alert.show(event.fault.message,"提示"); } protected function operation2_resultHandler(event:ResultEvent):void { // Todo Auto-generated method stub mAge = axisclient01.getAge.lastResult; //mAge = event.result as String; } protected function button1_clickHandler(event:MouseEvent):void { // Todo Auto-generated method stub //axisclient01.sayHello.send(); axisclient01.getAge.send(); //sayhello.text = mName; //getage.text = mAge; } ]]> </fx:Script> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> <s:WebService id="axisclient01" wsdl="http://localhost:8080/axis2/services/HelloWorldService?wsdl"> <s:operation name="sayHello" result="operation1_resultHandler(event)" fault="operation1_faultHandler(event)"> <s:request xmlns=""> <name>{Name.text}</name> </s:request> </s:operation> <s:operation name="getAge" result="operation2_resultHandler(event)" fault="operation1_faultHandler(event)"> <s:request xmlns=""> <i>{age.text}</i> </s:request> </s:operation> </s:WebService> </fx:Declarations> <s:Form id="formid" x="205" y="60" width="323" height="240" backgroundAlpha="0.5" backgroundColor="#ED1818" contentBackgroundColor="#F5E4E4" fontSize="15"> <s:Label text="姓名:"/> <s:TextInput id="Name"/> <s:Label text="年龄:"/> <s:TextInput id="age"/> <s:Button click="button1_clickHandler(event)" label="Click"/> <s:Label text="这是从webservice端返回的数据哦"/> <s:Label id="sayhello" text="{mName}"/> <s:Label id="getage" text="{mAge.toString()}"/> </s:Form> </s:Application>
运行之后有些问题:在function button1_clickHandler中,定义的分别显示sayHello和getAge返回的数据显示,在点击按钮之后只能一次显示一个,奇怪,我不知道为什么,请知道的留个信儿,谢谢了。
未完待续,明再来补完整
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。