`

Apache Axis2 环境搭配详解

 
阅读更多

Apache Axis2 环境搭配详解  

 

    WebService概念:它可以让一个程序透明的调用互联网程序,不用管具体实现细节,只要WebService公开了服务接口,远程客户端就可以调用服务。Webservice基于HTTP协议,它是分布式应用程序的发展趋势。

    Apache Axis是一个开源的WebSerbive运行引擎,现在拥有1.x和2.x两个版本。本文讲解Axis2.x版本,该版本较Axis1.x版本在体系结构上进行了重写,具有更高的效率、更加模块化也更加面向XML。Axis应该是最早一批SOAP(简单对象访问协议),该协议提供了标准的RPC方法来调用WebService。SOAP、RPC是建立在HTTP请求响应模式上的。

1.环境准备:

IDE:Eclipse3.5

依赖的JAR文件:

www.apache.org(Apache官方网站)上去下载:

a.WebService所需的包,这里我们下载Axis2的1.5.1版本。

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

b.Jakarta项目下的Ex-Jakarta项目下的HttpComponents子项目的核心JAR包,HttpCore4.1-alpha1的Binary包。

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

配置Eclipse,Eclipse自带了开发WebService的工具。

打开Eclipse-->点击菜单windows-->Preferences-->WebServices-->Axis2Preferences-->设置Axis2 runtime location为Axis2下载后并解压的核心包的位置:

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

选择后Eclipse会自动检测包是否正确。如果successfully提示表示设置正确。

2.在Eclipse创建一个WebProject时,点击Configuration的Modify会出现下图界面:

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

勾选Axis2 Web Services按OK。回到新建WebProject界面,完成项目创建。

创建成功后会发现在WEB-INF文件夹下会多出一个axis2-web的文件夹,这个是Axis2的项目文件夹。

现在启动服务器会抛出异常,这是因为Eclipse在自动加载生成该项目时有几个问题需要手动修复,下面分别列出:

问题一:会抛出异常:java.lang.ClassNotFoundException: org.apache.axis2.transport.http.AxisAdminServlet

是因为生动生成的web.xml文件中所指定的AxisAdminServlet包路径有错。

自动生成的源码如下:

<servlet>
    <display-name>Apache-Axis Servlet</display-name>
    <servlet-name>AxisServlet</servlet-name>
    <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/servlet/AxisServlet</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>*.jws</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
  <servlet>
    <display-name>Apache-Axis Admin Servlet Web Admin</display-name>
    <servlet-name>AxisAdminServlet</servlet-name>
    <servlet-class>org.apache.axis2.transport.http.AxisAdminServlet</servlet-class>
    <load-on-startup>100</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>AxisAdminServlet</servlet-name>
    <url-pattern>/axis2-admin/*</url-pattern>
  </servlet-mapping>

注意红色字体部分,我们可以去看一下所下载的Axis2的源包。AxisAdminServlet类所在的包路径并不在下列这个路径中org.apache.axis2.transport.http,该类是属于包org.apache.axis2.webapp下。

问题二:会抛出异常:java.lang.ClassNotFoundException: org.apache.http.HttpResponseFactory,是因为少JAR包。将开始下好的HttpCore4.1-alpha1包解压后主文件夹下的lib文件夹下有httpcore-4.1-alpha1.jar包。将其拷贝到WEB-INF下的lib文件夹中。

重启服务器,正常启动成功,在浏览器地址栏输入:http://localhost:9000/WebServiceProject/axis2-web/

进入主页,如下图:表示Axis2部署成功:

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

点击Validate进入验证Axis2环境界面:

这个页面会加册Axis2运行必备的一些库是否已具备,如果看到下列图中的绿色字体表示环境已搭建成功:

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

再次返回主页,点击Service,可以看到当前可用的Service列表。默认有一个名为“Version”的WebService。

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

再次返回主页,点击Adminnistation,进入管理控制台的登录界面:

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

输入username(用户名)和password(密码)。默认用户名为:admin,密码为:axis2。

点击登录进入Axis2管理控制平台:

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

可点击左边的Available Service产看当前可用的Service列表。

3.开发实例

在src下新建一个名为HelloApp的类:

package service;

public class HelloApp {

 public HelloApp() {
  
 }
 /**
  * 对外公开的服务方法
  */
 public String sayHello(String name) {
  return "Hello," + name;
 }
}

在Eclipse中将鼠标放在刚才建立的HelloApp.java上点击右键,弹出菜单选择Web Service再选择Create Web Service,会弹出下图的界面:

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

上下分别有个滑块,把上面的滑块滑至最上端(为Test service)。把下方滑块滑至第二格(Develop client)表示生成当前服务的客户端代码(完成后会在Eclipse中会自动生成一个名字为:[当前工程名+Client]的工程),同时选中publish the Web Service(公开这个Web Service)。点击下一步直至完成。步骤如图:

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

保持默认设置,点击下一步。

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

继续保持默认设置,点击下一步。

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

当前设置Port Name(端口名)选择:当前工程名+SOAP11HttpSoap11Endpoint。并勾选下面的Generate a JUnit test case to the service。其它选项保持默认点击完成。

完成后可以看到Web Service Explorer中可以看到我们刚刚对外公开的HelloApp服务,如下图:

 

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

选中左边窗口中的HelloApp服务,找到并点击右边窗口中的Type(类型)为SOAP的服务绑定Name。

进入下图界面:

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

当前列出了当前公开服务可用的方法,当前服务只有一个sayHello方法。点击Operations下Name为sayHello的方法,进入下图的界面:

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

当前列出了当前公开服务的方法及参数。当前的唯一方法sayHello有一个String类型的名为name的参数。

点击Add,转到下图:

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

为当前公开服务的sayHello方法传入一个String类型的name参数“EugeneHeen”,点击Go按钮。此时下面的Status(状态窗口)中会显示调用该方法后的结果。点击Source可以浏览到已经被SOAP分装好该服务的XML文件。

4.Eclipse生成的Client工程

在Eclipse中找到自动生成的客户端工程。在src下有一个当前公开服务的测试类。这是一个JUnit测试用例。

切记和服务端一样,这里需要将我们开始下好的HttpCore4.1-alpha1包解压后主文件夹下的lib文件夹下有httpcore-4.1-alpha1.jar包。不然会抛出异常:java.lang.ClassNotFoundException: org.apache.http.HttpResponseFactory

如图:

Apache Axis2 环境搭配详解 - EugeneHeen - EugeneHeen

打开HelloAppTest.java,找到testSayHello(String name)方法。里面有这样一行注释 // TODO : Fill in the sayHello4 here,它提示我们在此设置调用方法的参数。

Sub是存根。是有Axis2帮我们生成的客户端存根代码。可以这样理解,Sub封装了查找服务、编码、发送、接收、解码请求等一系列动作的帮助类。有了它我们不用去关心WebService底层调用的技术细节,而是直接调用WebService提供的方法。

 service.HelloAppStub stub = new service.HelloAppStub();这是方法中的第一行代码,实例化了一个存根。

方法中的第二行代码:

service.HelloAppStub.SayHello sayHello4 = (service.HelloAppStub.SayHello)getTestObject(service.HelloAppStub.SayHello.class);

调用了方法

public org.apache.axis2.databinding.ADBBean getTestObject(java.lang.Class type) throws java.lang.Exception{
           return (org.apache.axis2.databinding.ADBBean) type.newInstance();
        }

返回一个org.apache.axis2.databinding.ADBBean类型的对象。利用他来为要调用的方法设值。

为参数设值:sayHello4.setName("EugeneHeen");

最后自己编写一行打印调用当前公开服务的sayHello方法的语句:

System.out.println(stub.sayHello(sayHello4).local_return);

利用存根调用当前公开服务的sayHello(String name)方法,一定要调用local_return才能正确返回字符串。

运行该JUnit得到的结果与我们用Web Service Explorer为方法设值是一样的。这就是客户端编码调用。

分享到:
评论

相关推荐

    Tomcat_与_Apache_AXIS集成.pdf

    ### Tomcat与Apache AXIS集成详解 #### 一、概述 本文档主要介绍如何在Tomcat服务器上集成并部署Apache AXIS Web应用。Apache AXIS是一个用于构建和调用Web服务的工具包,它支持SOAP协议,使得不同平台之间的应用...

    Packt.Publishing.Quickstart.Apache.Axis2.May.2008

    ### Apache Axis2 快速入门知识点详解 #### 一、Apache Axis2简介 Apache Axis2是基于Java的一个高性能、轻量级的Web服务框架。它不仅支持SOAP协议,还提供了RESTful风格的服务接口,旨在帮助开发者更高效地构建高...

    axis2安装插件详解

    本教程将深入解析如何在Axis2环境中安装和使用插件,帮助开发者更好地理解和利用Axis2的功能。 首先,我们需要了解Axis2的核心概念。Axis2是基于 Axis1 的重构,设计目标是提高性能和模块化。它提供了服务导向架构...

    《Axis实例与分析详解》.zip

    《Axis实例与分析详解》...总之,《Axis实例与分析详解》是一本全面的指南,适合想要在Java EE环境中构建和管理SOAP Web服务的开发者。通过深入学习和实践,读者将能够熟练运用Axis,创建高效、可靠的Web服务解决方案。

    基于java的Web服务框架 Apache Axis.zip

    【Apache Axis:Java Web服务框架详解】 Apache Axis是Java平台上的一款开源Web服务框架,它为开发者提供了构建和部署Web服务的全面解决方案。该框架的主要功能是将Java类转换为Web服务,同时也支持将Web服务调用...

    用Apache AXIS 开发 Web Services Step By Step

    ### 使用Apache Axis开发Web Services 步骤详解 #### 一、环境准备 在开始使用Apache Axis开发Web Services之前,需要确保开发环境已经搭建好。本文档将详细介绍如何配置必要的环境。 **1.1 软件下载准备** - **...

    axis2c linux下c客户端编程详解

    ### axis2c Linux 下 C 客户端编程详解 #### 一、概述 本文档将详细介绍如何在Linux环境下使用axis2c引擎进行C语言客户端的编程。内容涵盖axis2c的安装过程、根据WSDL文件生成客户端代码的方法,以及客户端的具体...

    axis2介绍详细文档

    知识点:Axis2与SOAP引擎详解 一、Apache Axis2简介 Apache Axis2是Apache软件基金会下的一个开源项目,它是一个高性能、可扩展的SOAP服务框架,用于构建和部署Web服务。Axis2支持SOAP 1.1和SOAP 1.2标准,提供了...

    Axis2 接口生成wsdl工具

    **Axis2接口生成WSDL工具详解** 在Web服务开发领域,Apache Axis2是一个重要的开源工具,它被广泛用于创建和部署SOAP(Simple Object Access Protocol)和RESTful Web服务。标题中的"Axis2接口生成WSDL工具"正是 ...

    Axis2 WebService常用功能详解

    【Axis2 WebService常用功能详解】 Axis2是一个广泛使用的Web服务引擎,它为开发者提供了创建和部署Web服务的强大工具。由于其灵活性和丰富的特性,Axis2在不同场景下都有着广泛的应用,比如作为服务端接口发布Java...

    axis2 高端教程

    一、Axis2架构详解 1. 模块化设计:Axis2的核心特性之一是其模块化的架构,它允许开发者按需选择组件,提高灵活性和可扩展性。模块可以是处理特定任务的服务引擎,如SOAP 1.1或1.2引擎,也可以是数据绑定、传输层等...

    webservice AXIS2 操作手册说明文档

    AXIS2是Apache软件基金会开发的一个用于构建和部署Web Service的框架,它是基于AXIS1的升级版本,提供了更高效、更灵活的服务发布和消费机制。 在AXIS2中,我们可以采用多种方式来创建和发布Web Service,其中包括...

    cxf与axis2区别

    CXF与Axis2框架区别详解 CXF和Axis2是两个流行的Webservice框架,都是由现有的项目逐渐演化而来的。Axis2是由Axis1.x系列演化而来,而Apache CXF则是由Celtix和XFire项目整合而生。在本文中,我们将探讨CXF和Axis2...

    axis2-1.5.6-bin.zip

    《Apache Axis2 1.5.6:Web服务框架详解》 Apache Axis2是Java世界中的一款强大且灵活的Web服务框架,它以其高性能、模块化设计和丰富的功能集而备受赞誉。标题“axis2-1.5.6-bin.zip”和描述中的“axis2-1.5.6-bin...

    Axis2例子Demo

    Axis2是Apache软件基金会开发的一个开源Web服务引擎,它提供了一种高效、灵活且可扩展的方式来创建和部署Web服务。这个"Axis2例子Demo"旨在帮助开发者快速理解和应用Axis2框架,解决他们在尝试 Axis2 示例时可能遇到...

    《Axis实例与分析详解》

    ### Axis实例与分析详解 #### 一、Axis简介与安装 **Axis** 是一款由Apache组织维护的开源WebService运行引擎,支持SOAP协议。它源于Apache的另一项目——Apache SOAP,并在此基础上进行了大量的改进和发展。目前...

    axis2/c linux 安装步骤

    ### Axis2/C在Linux下的安装步骤详解 #### 软件说明 本文档旨在提供一套完整的Axis2/C在Linux环境下的安装与配置流程。通过本教程,用户可以顺利完成Apache HTTP服务器以及Axis2/C的安装与配置,从而实现基于C语言...

Global site tag (gtag.js) - Google Analytics