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

使用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#代码调用服务并返回结果。

 

 

 

 


出现了两个终结点,则必须要指定从哪一个终结点获取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值