服务端利用Axis2.x发布WebService,客户端Flex4访问

一、准备工作
首先需要下载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返回的数据显示,在点击按钮之后只能一次显示一个,奇怪,我不知道为什么,请知道的留个信儿,谢谢了。

未完待续,明再来补完整

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值