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文件的添加。
采用自动生成服务的XML文件的方式。
这里要设置文件的输出路径。
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
建立控制台应用程序。添加服务引用。
已经添加好了对服务的引用。
出现了两个终结点,则必须要指定从哪一个终结点获取。
相关文章推荐
- apache用户认证、默认主机、301跳转
- Apache 学习-环境配置
- linux下 使用apache2 ab 测试进行压力测试
- apache-ab并发负载压力测试(转)
- apache、php、mysql安装过程
- apache使用fastcgi配置python和php
- Apache禁止解析php 禁止指定user_agent Apache通过rewrite限制某个目录
- Apache日志切割
- Apache访问控制
- Centos 6安装完美搭建mysql、php、apache之旅
- Apache加载curl_init 失败 php_curl.dll
- 运行XAMPP中的apache出现 Error: Apache shutdown unexpectedly
- Apache配置静态缓存
- Apache不记录指定类型日志
- Apache日志切割
- Apache源码包添加启动脚本到系统服务
- Apache找不到服务错误
- 报错: org.apache.commons.pool2.impl.GenericObjectPoolConfig not found
- 升级win10 ,apache 80端口被占用
- wamp apache配置伪静态