今天稍看了下关于axis2的介绍,官方上说Apache Axis2是Apache提供的一款第三方Web Services引擎,与其前身Apache Axis相比,axis2更加高效、模块化,也更面向于XML的组织。经过精心的设计,axis2提供了更加便利的模块添加功能。
Apache axis是apache提供的基于java的,同时支持服务端和客户端的的web service引擎。提供了完整的对象模型和模块化的架构,所以能很方便的添加功能和支持新的web services相关的规范。
通过axis2,开发者可以简单地完成以下功能:
- 发送SOAP消息
- 接收并处理SOAP消息
- 通过普通的java类来创建web service
- 通过WSDL为server和client生成实现类
- 简单地获得服务的WSDL
- 在发送或接收的SOAP消息中添加附件
- 创建或使用RESTFUL web service
- 创建和使用具有以下支持的web service:
- WS-Security
- WS-ReliableMessaging
- WS-Addressing
- WS-Coordination
- WS-Atomic Transaction
- 使用Axis2的模块化结构快速的为新的web service规范提供支持。
在使用之前当然需要先安装axis2相关的服务。下面是我在linux上的一个安装过程,其主要过程来源于官方的Apache Axis2 Installation Guide,因为是英文,这里把中文的过程写下来,以便于参考。
关于axis2的包
关于axis2,官方提供了四种类型的包,分别为二进制包、war包、文档包和源文件包。其中的二进制包包含了示例程序和一些jar包;war包是可以作为web应用部署到servlet container中的axis2服务包,它是apache axis2提供的服务管理的工具类web应用,所谓的axis2的安装即指的是在servlet container中安装此包;文档包不再多说;源码包也不再多说。
官方文档说使用axis2需要的资源:java5及以上、不小于11M的硬盘空间和随便一个操作系统。另外为了把二进制数据打包成war文件,需要安装不低于1.6.5的apache ant;为了构建源码包,需要安装不低于maven2.0.7的maven。
好了,下面就进入安装流程了,共有4步:
1. 下载
上面提到的四个类型的资源包都可以下载,我这里只是下载了二进制包。对于下载到的axis2-1.6.0-bin.zip,我这里的解压目录为/home/enjiex/cube/axis-1.6.0,也即下面说的AXIS2_HOME,在windows上手动需要设置AXIS2_HOME环境变量,对于linux用户来说就很方便了,只需要到AXIS2_HOME/bin下执行setenv.sh即可,当然前提是已经在系统中设置了JAVA_HOME。这样就已经下载并配置好了AXIS2。
2. 启动axis2
已经上面的配置,就可以启动axis2了,进入到AXIS2_HOME/bin目录,即行如下脚本:
axis2server.sh
如果在终端中看如下,就说明已启动成功。
[INFO] [SimpleAxisServer] Started
[SimpleAxisServer] Started
[INFO] Listening on port 8080
此时打开浏览器http://localhost:8080会看到如下效果:
在上面的页面上看到的就是当前AXIS2_HOME/repository/services里已安装的可用的服务(在此目录中看到的.aar文件即为服务包)。
3. 打包axis2.war并部署
打包axis2.war需要使用到apache ant,所以打包之前需要先安装apache ant。在终端上通过如下命令即可自动完成安装及设置。
1.sudo apt-get install ant1.7
安装完成后,进入到AXIS2_HOME/webapp目录,我们会看到ant的build文件:build.xml,在此目录下运行如下命令打包:
1.ant create.war
打包成功后,会在AXIS2_HOME/dist目录下看到刚打的包文件axis2.war。在运行上面的ant命令时,会根据build.xml文件中的指令,把AXIS2_HOME/repository目录中的模块和服务及AXIS2_HOME/conf/axis2.xml中的配置一并打包到axis2.war中。
4.把axis2安装到servlet容器
把刚才打包好的axis2.war复制到servlet容器中的webapps(tomcat)或deploy(jboss)目录中,当然也可以通过在servlet容器的配置文件中指定axis2.war文件的位置来加载war包(在jboss中,只通过设置JBOSS_HOME/server/default/conf/jboss-server.xml中的deploy来指定war文件位置的)。
然后重启servlet容器,成功的话,会在浏览器http://localhost:8080/axis2中看到如下所示,这其实就是启动了axis2的services服务器,并可以在此web应用中上传或删除务:
点击“Services”链接,你会看到已安装了的服务,已成功安装了的服务会显示在avaliable service页面,如下:
如果服务在部署时报了错误,那么此服务会被当作失败的服务。点击该服务可以看到相应的失败信息。
在上面的主页面中,点击"Validate"链接来验证axis2服务是否都正确的启动。如果都已正确启动,会如下所示,表示axis2的核心服务库都已经加载:
在上面的主页面中,有一个"Administration"链接,进入后你会发现以下功能:
to check on the health of your Axis2 deployment.
to change any parameters at run time.
to upload new services into Axis2 [Service hot-deployment].
进入管理页面时,会要求输入用户名和密码,axis2默认的用户名和密码分别为:admin/axis2。
axis2提供了上传服务的接口,一旦按照axis2要求的服务规则实现了服务包(.aar文件),就可以在这个管理页面上把服务上传到axis2服务器上。已上传的服务会存储在默认的服务目录,对于 axis2为说此目录为<webapps>/axis2/WEB-INF/services目录中,上传的服务会即时生效,即不需要重启servlet容器。因为axis2支持热部署,因此可以通过删除文件系统中服务目录中的服务包来删除一个服务,也可以直接把服务文件复制到服务目录中为添加服务而不需要重启servlet容器。