一、Axis2的下载和安装

1.可从http://ws.apache.org/axis2/ 下载Axis2的最新版本:
      可以下载如下三个zip包:

  axis2-1.7.3-bin.zip(用来将编写的服务代码打包成aar文件)

  axis2-1.7.3-war.zip(用于将WebService发布到Web容器中)

  axis2-eclipse-service-plugin-1.7.3.zip(Eclipse插件)

  axis2-eclipse-codegen-plugin-1.7.3.zip(Eclipse插件)

前两个是eclipse的插件包,解压放到eclipse安装目录的dropins即可

重启eclipse可以看到

axis2-1.7.1-war.zip文件用于将WebService发布到Web容器中。解压下后将axis2.war放至tomcat安装目录下的webapps文件夹下,然后启动tomcat后,在webapps目录下会生成axis2文件夹。  访问http://localhost:8080/axis2/能看到以下页面表示axis2运行成功。

2  在Eclipse下新建Dtnamic Web Project,工程名:WebServiceServer(服务端)。新建包cn.test.webservice(包名小写,以免生成的java文件报错,后面的axis2自动生成的java文件包名都是小写,大写的包名生成java文件的包名都会变小写),在cn.test.webservice下新建IWebService

2:使用Axis2 代码生成器,完成WebService程序开发 (服务器端)根据接口生成 wsdl文件 (WebService 核心描述文件 )

选择项目,new other,选择axis2 的代码生成器,如图:

先用service接口生成wsdl文件,所以选择“从java代码生成wsdl文件”,点击【下一步】

填写类的名称,点击AddFolder  选择工作空间,项目下的bulid—>classes的目录,点击【测试类路径】显示成功!点击【下一步】

选择默认配置即可:

选择wsdl的输出路径,可以先放置到桌面

3:基于wsdl生成服务器代码。

选择项目,new other,选择axis2 的代码生成器,如图:

先用service接口生成wsdl文件,所以选择“从wsdl文件生成java代码”,点击【下一步】

选择wsdl文件的位置:如图:

选择代码选项为custom(自定义),并选择生成服务端代码和生成一个默认的services.xml文件,点击【下一步】。

选择输出路径,为项目的根路径,点击【结束】,刷新项目,即生成服务端代码。

服务端代码如图:

导入响应的jar包

把tomcat安装目录下的webapps/axis2/WEB-INF下的modules、service和conf文件拷至WebService下的WEB-INF目录下。同时把lib下jar包也拷到项目的lib包下(测试方便全部拷贝,实际开发有jar包冲突)。

拷贝webapps/axis2/WEB-INF/web.xml的servlet内容,放置到项目WebService的web.xml下 web.xml去掉出错的部分

  1. <servlet>
  2. <servlet-name>AxisServlet</servlet-name>
  3. <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
  4. <!--<init-param>-->
  5. <!--<param-name>axis2.xml.path</param-name>-->
  6. <!--<param-value>/WEB-INF/conf/axis2.xml</param-value>-->
  7. <!--<param-name>axis2.xml.url</param-name>-->
  8. <!--<param-value>http://localhost/myrepo/axis2.xml</param-value>-->
  9. <!--<param-name>axis2.repository.path</param-name>-->
  10. <!--<param-value>/WEB-INF</param-value>-->
  11. <!--<param-name>axis2.repository.url</param-name>-->
  12. <!--<param-value>http://localhost/myrepo</param-
  13. <!--</init-param>-->
  14. <load-on-startup>1</load-on-startup>
  15. </servlet>
  16. <servlet>
  17. <servlet-name>AxisAdminServlet</servlet-name>
  18. <servlet-class>
  19. org.apache.axis2.webapp.AxisAdminServlet</servlet-class>
  20. </servlet>
  21. <!-- servlet>
  22. <servlet-name>SOAPMonitorService</servlet-name>
  23. <display-name>SOAPMonitorService</display-name>
  24. <servlet-class>org.apache.axis2.soapmonitor.servlet.SOAPMonitorService</servlet-class>
  25. <init-param>
  26. <param-name>SOAPMonitorPort</param-name>
  27. <param-value>5001</param-value>
  28. </init-param>
  29. <init-param>
  30. <param-name>SOAPMonitorHostName</param-name>
  31. <param-value>localhost</param-value>
  32. </init-param>
  33. <load-on-startup>1</load-on-startup>
  34. </servlet -->
  35. <servlet-mapping>
  36. <servlet-name>AxisServlet</servlet-name>
  37. <url-pattern>/servlet/AxisServlet</url-pattern>
  38. </servlet-mapping>
  39. <servlet-mapping>
  40. <servlet-name>AxisServlet</servlet-name>
  41. <url-pattern>*.jws</url-pattern>
  42. </servlet-mapping>
  43. <servlet-mapping>
  44. <servlet-name>AxisServlet</servlet-name>
  45. <url-pattern>/services/*</url-pattern>
  46. </servlet-mapping>
  47. <servlet-mapping>
  48. <servlet-name>AxisAdminServlet</servlet-name>
  49. <url-pattern>/axis2-admin/*</url-pattern>
  50. </servlet-mapping>

将tomcat生成的axis2文件夹中的axis2-web文件放置到项目的WebContent的文件夹下。

4:服务端代码分析:

(1)ExtensionMapper:将实体类数据映射为XML文件

(2)GetScoreById:接口方法getScoreById的参数对象

(3)  GetScoreByIdResponse:接口方法getScoreById的返回值对象

(4)IWebServiceMessageReceiverInOut 这个类,负责远程数据发送和接收

(5)IWebServiceSkeleton:服务器接口实现类,负责实现IWebService的接口IWebServiceSkeleton类,所有可以在该类上定义发布的方法,代码如下

5:WEB-INF/services下新建 test(可以是任何文件夹都可以)/META-INF路径,将生成的resources下的2个文件拷贝到  test/META-INF的文件夹下。例如:

5:启动tomcat后访问:

http://localhost:8080/WebService/services/IWebService.wsdl能看到服务信息了。  到此Axis2的WebService服务已成功发布。

其中IWebService是IWebService.wsdl中定义的<service name="IWebService">service的名称

注意:看懂webservice的使用说明书,记住要从下向上看。

 

Axis2客户端调用:

下面看看利用axis2客户端调用实例

第一步:客户端程序需要的jar包(为了测试方便全部拷贝axis2 lib下jar包也拷到项目的lib包下)

第二步:生成客户端代码

选择axis2的代码生成器,点击【下一步】

选择从wsdl文件生成java代码

选择桌面的services.wsdl文件

选择默认default,即生成客户端代码

选择客户端的程序目录,点击【完成】

选择项目,刷新,会生成客户端代码

jar包

客户端没有Skeleton类 (业务接口实现) ,多了 IWebSystemDDLServiceStub 客户端测试类

客户端程序,使用 IWebServiceStub.java来编写

在客户端的测试程序中使用:代码如下

  1. </pre><pre name="code" class="html">package Test;
  2. import java.rmi.RemoteException;
  3. import cn.test.domain.xsd.Score;
  4. import cn.test.webservice.GetScoreById;
  5. import cn.test.webservice.GetScoreByIdResponse;
  6. import cn.test.webservice.IWebServiceStub;
  7. public class Test {
  8. public static void main(String[] args) throws RemoteException {
  9. /***调用网络服务axis调用webservice**/
  10. IWebServiceStub iWebServiceStub = new IWebServiceStub("http://192.168.1.104:8080/WebService/services/IWebService");
  11. //传递参数
  12. GetScoreById getScoreById = new GetScoreById();
  13. getScoreById.setArgs0(1);
  14. ////传递参数返回结果
  15. GetScoreByIdResponse getScoreByIdResponse = iWebServiceStub.getScoreById(getScoreById);
  16. Score[] get_return = getScoreByIdResponse.get_return();
  17. for (int i = 0; i < get_return.length; i++) {
  18. System.out.println("id:" +get_return[i].getId()+" score:"+get_return[i].getScore());
  19. }
  20. }
  21. }

代码下载:http://download.csdn.net/detail/u014695188/9460217

使用Axis2实现WebService的发布和调用的更多相关文章

  1. axis2 WebService的发布与调用

    1:准备:    JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html    e ...

  2. Axis2 webservice入门--Webservice的发布与调用

    一.Webservice发布 参考 http://www.cnblogs.com/demingblog/p/3263576.html 二.webservice 调用 部分参考:http://www.c ...

  3. WebService 的发布和调用

    WebService 四种发布方式总结 :https://blog.csdn.net/zl834205311/article/details/51612207 调用webService的几种方式 ht ...

  4. 使用axis2进行webservice发布与调用

    一.介绍下cxf.axis.axis2区别 新一代的Web Services 框架如Axis2.CXF 都是由现有的项目中逐渐演化而来的,Axis2 是由大家熟悉的Axis 1.x 系列演化过来,而A ...

  5. Axis2创建WebService服务端接口+SoupUI以及Client端demo测试调用

    第一步:引入axis2相关jar包,如果是pom项目,直接在pom文件中引入依赖就好 <dependency> <groupId>org.apache.axis2</gr ...

  6. CXF发布webService服务以及客户端调用

    这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...

  7. WebService的发布及客户端的调用

    一.目录 1.JAX-WS发布WebService 1.1 创建一个简单的WS 1.2 打包部署和发布 2.CXF+Spring发布WebService 3.客户端的调用方式 二.正文 1. JAX- ...

  8. python发布及调用基于SOAP的webservice

    现如今面向服务(SOA)的架构设计已经成为主流,把公用的服务打包成一个个webservice供各方调用是一种非常常用的做法,而应用最广泛的则是基于SOAP协议和wsdl的webservice.本文讲解 ...

  9. C# WebService创建、发布、调用的简单例子

    Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序. Web ...

随机推荐

  1. Mybatis与Hibernate的区别

    首先简单介绍下两者的概念: Hibernate :Hibernate 是当前最流行的ORM框架,对数据库结构提供了较为完整的封装. Mybatis:Mybatis同样也是非常流行的ORM框架,主要着力 ...

  2. [经验交流] docker in docker 的变通实现方法

    最近在做CI持续集成环境的容器化,其中一个工作是:在容器中构建容器镜像. 对于这个需求,网上有一些 Docker in Docker 的方法,具体需要修改宿主机的配置.这种方式在单机环境下.对安全要求 ...

  3. dubbo服务自动化测试搭建

    java实现dubbo的消费者服务编写:ruby实现消费者服务的接口测试:通过消费者间接测试dubbo服务接口的逻辑 内容包括:dubbo服务本地调用环境搭建,dubbo服务启动,消费者部署,脚本编写 ...

  4. Vmware workstation 11 安装 RedHat 9 时 第二个iso文件 出现光盘无法被挂载

    通过虚拟机装linux系统,RedHat 9有3个iso文件,安装第一个iso文件时很顺利,安装完成第一个iso文件后,提示请插入光盘 需要继续安装第二个和第三个iso文件,点击菜单栏——虚拟机——设 ...

  5. Netty服务端与客户端(源码一)

    首先,整理NIO进行服务端开发的步骤: (1)创建ServerSocketChannel,配置它为非阻塞模式. (2)绑定监听,配置TCP参数,backlog的大小. (3)创建一个独立的I/O线程, ...

  6. Ubuntu 下安装 SQL Server 2016初探

    安装步骤参官方 https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-setup-ubuntu 执行命令如下: .Enter supe ...

  7. ActiveMQ与WebSocket的结合应用

    前段时间无意之中看到了WebSocket这样东西,发现自己真的是火星了.早在11年就有的东西,一直都不知道. 研究了一番之后感觉还是比较好用的. 我很少做Socket开发,但是曾经由于项目的原因,用过 ...

  8. (Tree)94.Binary Tree Inorder Traversal

    /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * Tre ...

  9. nginx secure_link下载防盗链

    下载服务器上有众多的软件资源, 可是很多来源不是本站,是迅雷.flashget, 源源不断的带宽,防盗链绝对是当务之急. 使用来源判断根本不靠谱,只能防止一些小白站点的盗链,迅雷之类的下载工具完全无效 ...

  10. 基于JS功能强大的日期插件Kalendae

    开发中需要一个日期插件,可以在zepto下使用,可以选择日期段,可以设置不可选日期 找到一个完全满足的,并且基于JS不依赖于任何库. 在线演示:http://chipersoft.com/Kalend ...