您的位置:首页 > 运维架构 > Apache

Java Web 跨平台 - 使用Apache Axis2引擎发布基于Java语言的WebService并跨平台调用实例

2016-01-02 20:47 961 查看

使用Apache Axis2引擎发布基于Java语言

的WebService并跨平台调用实例

一、 配置ApacheAxis2Web Service引擎

下载组件和插件

需要的四个组件,可以在http://axis.apache.org/axis2/java/core/index.html官方网站中下载到。



axis2-1.6.4-bin.zip和axis2-1.6.4-war.zip包是Axis2的必备组件;

axis2-eclipse-codegen-plugin-1.6.4.zip包是Eclipse中适用于Axis的插件,可以方便地将WebService代码生成wsdl文件以及解析wsdl文件生成客户端Java代码文件;

axis2-eclipse-service-plugin-1.6.4.zip包是Eclipse中适用于Axis的插件,可以方便地将WebService代码转换为后缀名为.arr文件。

安装插件

将axis2-eclipse-codegen-plugin-1.6.4.zip和axis2-eclipse-service-plugin-1.6.4.zip包中的jar插件复制到MyEclipse安装目录下的dropins目录下,重启MyEclipse。

部署axis2组件

将axis2-1.6.4-war.zip包中的war文件复制到Tomcat安装目录下的webapps目录下。

启动Tomcat,使用浏览器访问http://localhost:8080/axis2



出现此页面即表示Axis2已经配置成功。

二、 创建并发布WebService

创建Web Service

建立Java Web项目并建立一个服务类。



服务类代码如下:

package axis2.service;

import java.util.ArrayList;
import java.util.List;

/**
* 服务类
*
*@author SteveJrong
*
*/
public class AxisWB {
/**
* 获取每个组里的全部人员的姓名
*
* @return
*/
publicList<String> getPeoplesOfGroup() {
List<String>list = new ArrayList<String>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
list.add("小花");

returnlist;
}

/**
* 根据人员姓名获取人员工号
*
* @param name
* @return
*/
publicInteger getSNByPeopleName(String name) {

IntegerSN = -1;

switch(name) {
case"张三":
SN= 1;
break;

case"李四":
SN= 2;
break;

case"王五":
SN= 3;
break;

case"赵六":
SN= 4;
break;

case"小花":
SN= 5;
break;

default:
SN= 0;
break;
}

returnSN;
}
}


将服务代码打包成arr文件

新建Axis2 Service Archiver类型的项目



配置Class File Location的位置为当前建立项目的WEB-INF/classes目录下,且不要勾选“Include .class files only”选项。



设置跳过WSDL文件的添加。



这里暂时不需要添加JAR包,直接下一步。



采用自动生成服务的XML文件的方式。



设置自动生成的XML文件中的属性,这里Service Name是对外提供的服务名称,而Class Name则是刚才写好的服务类的类名(全限定路径)。



这里要设置文件的输出路径。

Output file location的位置一定要设置为asix2组件的位置,因为要基于这个位置来发布服务的。

Output file name则是要输出的文件名称。

这里我把输出文件的名称设置为了people_service



提示自动生成成功。



转到Tomcat目录下的asix2的WEB-INF/services目录下查看,生成了后缀名为arr的people_service文件。



测试:

输入http://localhost:8080/axis2/services/listServices查看刚才新建的Web Service。



点击刚才创建的Web Service,显示服务页面服务正常发布且地址栏显示http://localhost:8080/axis2/services/AxisService?wsdl



三、 测试WebService

生成客户端文件(用于在Java中测试,C#调用非必需)

新建一个Axis2 Code Generator项目。



这里选择“GenerateJava source code from a WSDL file”(根据WSDL生成webservice客户端的java代码)。



这里设置服务发布的WSDL路径。



这里保持默认并继续。



这里设置自动生成的代码要生成到哪一位置。

第一个选项是生成到项目中的某一位置;

第二个选项是生成到硬盘的某一位置。

为了好找一些,我选择生成到桌面额一个文件夹中便于查找和使用。



提示生成成功。



生成的文件:

根目录下的build.xml文件



Service下生成的Java代码文件。



现在需要将这些代码文件和build.xml放入到测试项目中。

新建一个Java Web项目作为客户端项目进行测试,并将刚才自动生成的代码和XML文件一并拷到项目中来。

Java代码报错时需要将最开始下载的axis2-1.6.4-bin.zip包中的lib目录下的所有jar包导入到项目下。



编写测试类:

package axisservice.test;

import java.rmi.RemoteException;

import axis2.service.AxisService;
import axis2.service.AxisServiceStub;
import axis2.service.GetPeoplesOfGroup;
importaxis2.service.GetPeoplesOfGroupResponse;

public class Test {

/**
* 测试Axis服务
*
* @throws RemoteException
*/
publicstatic void main(String[] args) throws RemoteException {

//创建服务客户端
AxisServiceservice = new AxisServiceStub();

//创建服务实例
GetPeoplesOfGroupgetPeoplesOfGroup = new GetPeoplesOfGroup();

//根据服务实例创建回发实例
GetPeoplesOfGroupResponsepeoplesOfGroupResponse = service
.getPeoplesOfGroup(getPeoplesOfGroup);

//循环输出结果
for(String people : peoplesOfGroupResponse.get_return()) {
System.out.print(people+ "、");
}
}
}


Java中的执行结果:



四、 在VisualStudio中引用基于Java平台的 Web Service

建立控制台应用程序。



添加服务引用。



在“地址”文本框中填写wsdl服务发布地址,点击“转到”,即可查看到当前使用Axis2发布的Web Service,他共有两个方法。



已经添加好了对服务的引用。



编写C#代码调用服务并返回结果。





出现了两个终结点,则必须要指定从哪一个终结点获取。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: