学习axis2,简单随笔,看到哪实践到哪,笔记到哪 (pojo----stub)



 

  笑一个
一、环境安装(tomcat,本人5.5):
首先下载到官方网站下载axis2 war包。
将war包复制到webapps目录下边,启动tomcat,服务器加载了war包后会生成axis2目录,跟我们平时的应用目录没神马区别,唯一要注意的是axis的配置文件在WEB-INF\conf,
在开发过程中要修改一下这个的配置文件。

二、(改造配置文件):
配置axis2的文件,axis2支持热部署,意味着你可以再编译好的class文件,直接复制到pojo目录下(默认是pojo,等会有说明修改)。
在配置文件中找到<parameter name="hotdeployment">true</parameter>默认已经为热部署;
另外一个在开发过程中你常需要把热更新打开,默认是false 不打开,找到hotupdate
<parameter name="hotupdate">true</parameter>
发布pojo的目录只是默认的,如果需要使用其他的目录,需要添加配置元素,在axisconfig下面添加
<deployer extension=".class" directory="mymulu" class="org.apache.axis2.deployment.POJODeployer"/>
上面的配置文件只需要修改 directory的属性,改为目录名

二、(使用POJO方式发布webservice):
在pojo目录(此目录没有,在axis2\WEB-INF下面创建,其实细心的同学会发现,在配置文件axis就已经给我们定义了pojo目录,看前面添加发布pojo目录)下面的webservice可以通过重写url去访问(后面带一些参数,类似action),如果遇到数据类型则需要做转换,原因传输过程是以字符串形式传输,而且重写URL的参数名必须要与方法的参数名相同。感觉比较土的方法

好吧说了那么多,现在让我们来个helloworld吧~!!
首先我们先发布一个webservice,
编写一个MyTest类

public class MyTest {
	
	public String getString(String str){
		System.out.println("调用了getString()传入参数"+str);
		return str;
	}
	public void doNoThing(String str){
		System.out.println("调用了doNothing()传入参数:"+str);
	}

}


1.启动你的tomcat,访问这个url:http://127.0.0.1:8080/axis2/ (确保axis2是正常运行了),
2.神马,没改配置文件,好吧,就在%tomcat_home%\webapps\axis2\WEB-INF下面建立一个pojo文件夹。编写好的类编译成class文件后,直接复制到你所指定的目录下。
3.最后访问你的服务吧http://127.0.0.1:8080/axis2/services/MyTest?wsdl


现在开始客户端开发,这里省略了使用axis的API开发客户端,个人觉得这样的开发效率好低吖,新手上手(本人懒的去看那个API),应该快速掌握怎么使用,所以这里介绍stub方式,使用了axis自带的命令,可以根据wsdl生成客户端,在%AXIS2_HOME%\bin目录下有一个wsdl2java脚本(注意是wsdl to java)。
前提准备
下载了axis2 bin 文件,配置环境变量 例如:
变量名:AXIS2_HOME 
值:E:\study\webservice\axis2-1.5.4-bin\axis2-1.5.4

这里要用到前面的发布的webservice,保持你的服务器是启动的,你的服务正常。
打开CMD
输入下面的命令
%AXIS2_HOME%/bin/wsdl2java -uri http://localhost:8080/axis2/services/MyTest?wsdl -p com.lj.mywebservice  -s -o c:/mywebservice

这里说一下参数, -uri 当然是服务的wsdl文件地址,-p 报名 , -o 表示目录,这里写的是绝对路径,也可以写相对路径

回车,你会发现在C盘下多了一个文件目录,打开里边一层层进去后,有一个MyTestStub类,这个类实现非常复杂,不用管他,拿过来直接用。
新建一个工程,写个测试类,把刚才生成的类复制进去,当然别忘记了引入axis的jar包。

package com.lj.myswebservice;

import java.rmi.RemoteException;

import org.apache.axis2.AxisFault;

public class TestClass {
	public static void main(String[] args) {
		
		try {
			MyTestStub my=new MyTestStub();
			//在MYTestStub里边定义了三个静态嵌套类,分别作为参数对象,返回值对象。
			//这里定义了donothing方法的参数对象
			MyTestStub.DoNoThing donothing=new MyTestStub.DoNoThing();
			//这里定义了getstring方法的参数对象
			MyTestStub.GetString getstring=new MyTestStub.GetString();
			这里定义了getString方法的返回值对象
			MyTestStub.GetStringResponse getstringresponse=new MyTestStub.GetStringResponse();
			//设置参数值
			donothing.setArgs0("神马也不做啊");
			//设置参数值
			getstring.setArgs0("我是帅锅");
			//调用donothing方法
			my.doNoThing(donothing);
			//调用getString发放,设置参数,并返回值
			getstringresponse=my.getString(getstring);
			//打印返回值
			System.out.println(getstringresponse.get_return());
		} catch (AxisFault e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}


运行结果如下。
<!--StartFragment -->

 
服务器结果如下。
<!--StartFragment -->



总结,使用axis2构建服务是非常快的,这个例子使用的是deploy pojo的方式发布服务,所谓pojo就是个普通的JAVA类,与javabean区别就是不一定有get set方法(是不是这样理解?)。在客户端调用服务的时候,采取stub方式(貌似现在很流行,这样编写客户端是灰常直观的),只要拿到wsdl文件,就可以使用 wsdl2java命令生成客户端,大大减少了开发量。

还差得远( ⊙ o ⊙ )啊!··明晚再看看别的方式发布鸟··

晚了睡觉了··明天早起上班( ⊙ o ⊙ )啊!···

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值