第一个AXIS2程序,向世界打个招呼吧!hello world!

今天完成了第一个用axis2开发的webservice程序。用axis2来开发webservice简直太简单了

关于什么axis:大家可以参考这里

https://www.bugkong.com/archives/2015_08_486.html

下面我们就开始说说步骤吧:

1,从官方网站下载最新的jar包

http://axis.apache.org/axis2/java/core/download.cgi   当前我下载到的最新版本是1.6.3

需要下载axis2-1.6.3-bin和axis2-1.6.3-war

2,下载好后,先将war压缩包下的axis2.war拷贝到tomcat下哦,即webapps目录下

然后启动tomcat

然后在地址栏输入 http://localhost:8080/axis2/ 能够正常打开,表示我们axis2.war发布成功了

[caption id="attachment_477" align="alignnone" width="786"]axis2.war axis2.war[/caption]


3,下面我们开始编写事例代码吧


public class SimpleWebservice {
	public String helloworld(){
		return "hello world";
	}
	public int HowOldYou(int old){
		return old;
	}
	public void voidHowOldYou(int old){
		System.out.println("您今年已经"+old+"岁了吗?");
	}
}
注意,该代码是在默认包下哦



2


demo.java是一个后面我们要用到的测试类,先不管哈

SimpleWebservice类里面有三个方法,

第一个方法 helloworld 直接返回一个字符串:向世界打个招呼

第二个方法 HowOldYou 直接返回一个年龄

第三个方法 voidHowOldYou 没有返回值哦

4,接起来编译这段代码,并且将这个编译后的class文件拷贝到 \Tomcat 8.0\webapps\axis2\WEB-INF\pojo 如果没有pojo文件,请新建一个哦。

5,重启我们的tomcat

打开http://localhost:8080/axis2/  你会发现点击Services这个连接,在下面我们可以看到我们刚刚写的那个类的方法名


3

并且你还可以点击SimpleWebservice,可以查看到的wsdl描述文档

并且您还可以这样访问这三个方法:

http://localhost:8080/axis2/services/SimpleWebservice/HowOldYou?old=21

http://localhost:8080/axis2/services/SimpleWebservice/helloworld

http://localhost:8080/axis2/services/SimpleWebservice/voidHowOldYou?old=21

注意红色标记的连接,因为该方法没有返回值,所以什么也没有显示,后面我们会继续说

6,我们开始编写测试类吧,测试类的图上面已经贴出,这里就不在贴出了

首先,我们需要将jar包拷贝到我们的项目下,jar包刚刚我们已经下载。

然后就可以开始编写了

我这里贴上测试类的全部代码和注释,希望您能够看懂


public class demo {

	public static void main(String[] args) {
		//使用RPC方式调用WebService
		RPCServiceClient serviceClient = null;
		try {
			serviceClient = new RPCServiceClient();
		} catch (AxisFault e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//开启Options请求 Options options = serviceClient.getOptions();
		
		//  指定调用WebService的URL
		EndpointReference er = new EndpointReference("http://localhost:8080/axis2/services/SimpleWebservice");
		options.setTo(er);
		
		//指定HowOldYou方法的参数值
		Object[] opAddArgs = new Object[]{21};
		//指定HowOldYou方法返回值的数据类型的class对象
		Class[] classs = new Class[]{int.class};
		//指定要调用的HowOldYou方法及wsdl文件的命名空间,第一个参数表示WSDL文件的命名空间
		//通过访问http://localhost:8080/axis2/services/SimpleService?wsdl 就可以看见 元素的targetNamespace属性值
		QName qname = new QName("http://ws.apache.org/axis2","HowOldYou");
		
		//调用HowOldYou方法并输出该方法的返回值
		//这里有三个参数的意思:1,是QName对象,表示要调用的方法名;2,webservice的参数值,参数类型是Object[];3,返回值class对象,参数类型是Class[],即int类型,
		try {
			System.out.println(serviceClient.invokeBlocking(qname, opAddArgs,classs)[0]);
		} catch (AxisFault e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 
		
		//下面是调用helloworld方法的代码,这些代码与调用HowOldYou方法的代码类似 
		classs = new Class[]{String.class};
		qname = new QName("http://ws.apache.org/axis2","helloworld");
		//如果没有参数,参数不能为null,应该为new Object[]{}
		try {
			System.out.println(serviceClient.invokeBlocking(qname, new Object[]{},classs)[0]);
		} catch (AxisFault e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
                //下面开始调用没有返回值的voidHowOldYou方法
                //指定该方法的参数值
                opAddArgs = new Object[]{22};
                //设置命名空间
		qname = new QName("http://ws.apache.org/axis2","voidHowOldYou");
		//这里需要注意的是,没有返回值,我们应该使用invokeRobust方法
		try {
			serviceClient.invokeRobust(qname, opAddArgs);
		} catch (AxisFault e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

7,运行测试结果

[caption id="attachment_480" align="alignnone" width="424"]测试结果 测试结果[/caption]

上面的结果只在控制台打印出了helloworld和HowOldYou方法的值,第三个却没有打印出来。

这是因为第三个方法voidHowOldYou他是没有返回值的。他的输出结果在后端tomcat那里

[caption id="attachment_481" align="alignnone" width="510"]webservice hello world webservice hello world[/caption]


8,axis2提供了一个工具,他可以将我们的类进一步封装

首先,打开我们下载的jar文件夹这个文件在这里:axis2-1.6.3-bin\axis2-1.6.3\

将里面的bin目录拷贝出来,复制到任意盘,这是我们需要的哦

比如我复制到了这里D:\axis2\bin

现在我们需要设置环境变量

AXIS2_HOME:D:\axis2

Path 添加 ;%AXIS2_HOME%\bin

现在我们可以测试下

在cmd下输入 %axis2_home%\bin\axis2server.bat 能够正确看到欢迎信息

9,一切准备就绪后,我们运行如下命令

wsdl2java -uri http://localhost:8080/axis2/services/SimpleWebservice?ws
dl -p com.client.test -s -o stub
-uri 是你的 wsdl描述文档的地址

-p 是包名,这个包名是我们要用到的哦

-o 是生成文件的目录名

运行上面的命令后,我们会在这里看到我们的java文件,如图:


6


10,我们将这个java文件拷贝到我们客户端的工程目录下,同时将src下生成的build.xml文件也拷贝到工程目录下的src下,需要注意的是包名要一致


[caption id="attachment_484" align="alignnone" width="269"]webService webService[/caption]


11,现在我们开始编写demoClient测试类

编写这个测试类就很简单了,这里贴出调用一个方法的代码如下:


public class demoClient {

	public static void main(String[] args) {
		SimpleWebserviceStub ss = null;
		try {
			ss = new SimpleWebserviceStub();
		} catch (AxisFault e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//下面开始获得hello world
		SimpleWebserviceStub.Helloworld helloworld = new SimpleWebserviceStub.Helloworld();
		try {
			System.out.println(ss.helloworld(helloworld).get_return());
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
这里神略了调用其他方法,方法是类似的哦
}
自此,我们的第一个关于axis2的hello world程序就完成了哦



爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img