ivaneeo's blog

自由的力量,自由的生活。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

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

二、(改造配置文件): 
配置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目录(此目录没有,在axis2WEB-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%webappsaxis2WEB-INF下面建立一个pojo文件夹。编写好的类编译成class文件后,直接复制到你所指定的目录下。 
3.最后访问你的服务吧http://127.0.0.1:8080/axis2/services/MyTest?wsdl 


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

posted on 2011-08-24 11:08 ivaneeo 阅读(672) 评论(0)  编辑  收藏 所属分类: java魔力

只有注册用户登录后才能发表评论。


网站导航: