- 浏览: 138088 次
文章分类
最新评论
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版本。
b.Jakarta项目下的Ex-Jakarta项目下的HttpComponents子项目的核心JAR包,HttpCore4.1-alpha1的Binary包。
配置Eclipse,Eclipse自带了开发WebService的工具。
打开Eclipse-->点击菜单windows-->Preferences-->WebServices-->Axis2Preferences-->设置Axis2 runtime location为Axis2下载后并解压的核心包的位置:
选择后Eclipse会自动检测包是否正确。如果successfully提示表示设置正确。
2.在Eclipse创建一个WebProject时,点击Configuration的Modify会出现下图界面:
勾选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部署成功:
点击Validate进入验证Axis2环境界面:
这个页面会加册Axis2运行必备的一些库是否已具备,如果看到下列图中的绿色字体表示环境已搭建成功:
再次返回主页,点击Service,可以看到当前可用的Service列表。默认有一个名为“Version”的WebService。
再次返回主页,点击Adminnistation,进入管理控制台的登录界面:
输入username(用户名)和password(密码)。默认用户名为:admin,密码为:axis2。
点击登录进入Axis2管理控制平台:
可点击左边的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,会弹出下图的界面:
上下分别有个滑块,把上面的滑块滑至最上端(为Test service)。把下方滑块滑至第二格(Develop client)表示生成当前服务的客户端代码(完成后会在Eclipse中会自动生成一个名字为:[当前工程名+Client]的工程),同时选中publish the Web Service(公开这个Web Service)。点击下一步直至完成。步骤如图:
保持默认设置,点击下一步。
继续保持默认设置,点击下一步。
当前设置Port Name(端口名)选择:当前工程名+SOAP11HttpSoap11Endpoint。并勾选下面的Generate a JUnit test case to the service。其它选项保持默认点击完成。
完成后可以看到Web Service Explorer中可以看到我们刚刚对外公开的HelloApp服务,如下图:
选中左边窗口中的HelloApp服务,找到并点击右边窗口中的Type(类型)为SOAP的服务绑定Name。
进入下图界面:
当前列出了当前公开服务可用的方法,当前服务只有一个sayHello方法。点击Operations下Name为sayHello的方法,进入下图的界面:
当前列出了当前公开服务的方法及参数。当前的唯一方法sayHello有一个String类型的名为name的参数。
点击Add,转到下图:
为当前公开服务的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
如图:
打开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为方法设值是一样的。这就是客户端编码调用。
发表评论
-
Webservice用来传递参数,并返回对象(采用手动打成aar包)
2012-09-17 17:40 7231. 首先,先编写服务端代码 [ ... -
Axis2的相关准备工作,以及提供的一个简单的例子
2012-09-17 17:38 822参考网上的相关例子,来进行准备以及后续的开发工作。 一. ... -
Axis2 关于 Web Serviece 发布
2012-09-14 10:49 673关于 Web Serviece 以及 Axis2 技术(修定1 ... -
使用axis2 构建webservice
2012-09-14 09:49 550http://www.doc88.com/p-69630666 ... -
Axis2 中的工具wsdl2Java 的使用点滴
2012-09-14 09:31 1047Axis2是常用的一种SOAP engine,但是它提供的ws ... -
Axis2: wsdl2java 参数注解
2012-09-14 09:23 1091wsdl2java 用于根据WSDL生成相应的服务端和客户 ... -
axis2 发布成 war 包发布 axis打成war包
2012-09-11 10:31 761axis2 发布成 war 包发布 axis打成war包 ... -
WebService Axis2
2012-09-11 10:13 7511,下载axis2-1.6.1-bin.zip,axis2-1 ... -
JAVA转WSDL使用说明
2012-09-04 17:28 650进入接口所在class文件的文件夹(包的最上层,如果包名是co ... -
控制台用WSDL转JAVA方法
2012-09-04 17:26 863控制台用wsdl转JAVA方法: Axis2提供了一个wsdl ...
相关推荐
### Tomcat与Apache AXIS集成详解 #### 一、概述 本文档主要介绍如何在Tomcat服务器上集成并部署Apache AXIS Web应用。Apache AXIS是一个用于构建和调用Web服务的工具包,它支持SOAP协议,使得不同平台之间的应用...
### Apache Axis2 快速入门知识点详解 #### 一、Apache Axis2简介 Apache Axis2是基于Java的一个高性能、轻量级的Web服务框架。它不仅支持SOAP协议,还提供了RESTful风格的服务接口,旨在帮助开发者更高效地构建高...
本教程将深入解析如何在Axis2环境中安装和使用插件,帮助开发者更好地理解和利用Axis2的功能。 首先,我们需要了解Axis2的核心概念。Axis2是基于 Axis1 的重构,设计目标是提高性能和模块化。它提供了服务导向架构...
《Axis实例与分析详解》...总之,《Axis实例与分析详解》是一本全面的指南,适合想要在Java EE环境中构建和管理SOAP Web服务的开发者。通过深入学习和实践,读者将能够熟练运用Axis,创建高效、可靠的Web服务解决方案。
【Apache Axis:Java Web服务框架详解】 Apache Axis是Java平台上的一款开源Web服务框架,它为开发者提供了构建和部署Web服务的全面解决方案。该框架的主要功能是将Java类转换为Web服务,同时也支持将Web服务调用...
### 使用Apache Axis开发Web Services 步骤详解 #### 一、环境准备 在开始使用Apache Axis开发Web Services之前,需要确保开发环境已经搭建好。本文档将详细介绍如何配置必要的环境。 **1.1 软件下载准备** - **...
### axis2c Linux 下 C 客户端编程详解 #### 一、概述 本文档将详细介绍如何在Linux环境下使用axis2c引擎进行C语言客户端的编程。内容涵盖axis2c的安装过程、根据WSDL文件生成客户端代码的方法,以及客户端的具体...
知识点:Axis2与SOAP引擎详解 一、Apache Axis2简介 Apache Axis2是Apache软件基金会下的一个开源项目,它是一个高性能、可扩展的SOAP服务框架,用于构建和部署Web服务。Axis2支持SOAP 1.1和SOAP 1.2标准,提供了...
**Axis2接口生成WSDL工具详解** 在Web服务开发领域,Apache Axis2是一个重要的开源工具,它被广泛用于创建和部署SOAP(Simple Object Access Protocol)和RESTful Web服务。标题中的"Axis2接口生成WSDL工具"正是 ...
【Axis2 WebService常用功能详解】 Axis2是一个广泛使用的Web服务引擎,它为开发者提供了创建和部署Web服务的强大工具。由于其灵活性和丰富的特性,Axis2在不同场景下都有着广泛的应用,比如作为服务端接口发布Java...
一、Axis2架构详解 1. 模块化设计:Axis2的核心特性之一是其模块化的架构,它允许开发者按需选择组件,提高灵活性和可扩展性。模块可以是处理特定任务的服务引擎,如SOAP 1.1或1.2引擎,也可以是数据绑定、传输层等...
AXIS2是Apache软件基金会开发的一个用于构建和部署Web Service的框架,它是基于AXIS1的升级版本,提供了更高效、更灵活的服务发布和消费机制。 在AXIS2中,我们可以采用多种方式来创建和发布Web Service,其中包括...
CXF与Axis2框架区别详解 CXF和Axis2是两个流行的Webservice框架,都是由现有的项目逐渐演化而来的。Axis2是由Axis1.x系列演化而来,而Apache CXF则是由Celtix和XFire项目整合而生。在本文中,我们将探讨CXF和Axis2...
《Apache Axis2 1.5.6:Web服务框架详解》 Apache Axis2是Java世界中的一款强大且灵活的Web服务框架,它以其高性能、模块化设计和丰富的功能集而备受赞誉。标题“axis2-1.5.6-bin.zip”和描述中的“axis2-1.5.6-bin...
Axis2是Apache软件基金会开发的一个开源Web服务引擎,它提供了一种高效、灵活且可扩展的方式来创建和部署Web服务。这个"Axis2例子Demo"旨在帮助开发者快速理解和应用Axis2框架,解决他们在尝试 Axis2 示例时可能遇到...
### Axis实例与分析详解 #### 一、Axis简介与安装 **Axis** 是一款由Apache组织维护的开源WebService运行引擎,支持SOAP协议。它源于Apache的另一项目——Apache SOAP,并在此基础上进行了大量的改进和发展。目前...
### Axis2/C在Linux下的安装步骤详解 #### 软件说明 本文档旨在提供一套完整的Axis2/C在Linux环境下的安装与配置流程。通过本教程,用户可以顺利完成Apache HTTP服务器以及Axis2/C的安装与配置,从而实现基于C语言...