本文将引导你在Linux操作系统下利用Axis C++来构建Web服务,同时将介绍如何开发和部署可在Axis C++下使用的Web服务。
众所周知,Axis是一个非常出名的Web服务框架软件,它有Java和C++两个版本。关于Java版我已经写了两篇文章来介绍它,分别是《应用AXIS开始Web Service之旅》以及《AXIS实现Web 服务之深入篇》,这两篇文章的地址请参照本文末尾的资料参考部分。相比于Java版的Axis,C++的版本在安装和配置方面就显得复杂很多,而且对所依赖的程序的版本要求也比较严格,尽管这样,Axis C++在经过几个版本的发展已经日趋完善,只要遵照安装的步骤以及严格使用所要求的版本即可成功完成构建过程。
安装Axis C++ Web服务框架
在安装Axis C++之前有两个组件是必须安装的,分别是Apache HTTP Server以及用于处理XML的程序Xerces;为了编译Axis以及Apache HTTPD,你的Linux机器还应该装有gcc编译器。
1. 编译并安装Apache 2
你也可以使用Apache 1.3,但关于这个版本的安装请参照相应文档,这里不再具体介绍。从Apache网站上下载最新的Apache HTTP Server源码打包文件,目前最新的稳定版本是2.0.52。假设下载的文件名是httpd-2.0.52.tar.gz,执行以下命令编译并安装HTTP服务。
解压:tar zxvf httpd-2.0.52.tar.gz cd httpd-2.0.52 配置:./configure --prefix=/apache/httpd #把HTTP服务安装到/apache/httpd目录下 编译:make 安装:make install 定制:编辑/apache/httpd/conf/httpd.conf中的ServerRoot值为”/apache/httpd” 去掉ServerName的注释,并设置值为 localhost:80 启动:/apache/httpd/bin/apachectl start 检验:使用浏览器打开网址 http://localhost 看是否出现Apache的欢迎页面。 |
至此Apache 2安装完毕!Apache HTTP服务器的安装包下载路径是 http://www.apache.org/dist/httpd/httpd-2.0.52.tar.gz
2. 安装Xerces 2.2.0
Axis C++可以使用两种程序库来处理XML信息,分别是Xerces以及Expat。在这里我们使用的是Xerces。Axis C++对这两个库的版本要求特别严格,Xerces必须是2.2.0版。到http://archive.apache.org/dist/xml/xerces-c/Xerces-C_2_2_0/ 下载Xerces的二进制文件,请注意Linux下的文件名是:xerces-c2_2_0-linux8.0gcc32.tar.gz。使用下面命令将该文件解压到/apache/xerces目录下并进行安装。
解压:tar zxvf xerces-c2_2_0-linux8.0gcc32.tar.gz --directory=/apache cd /apache ln –s xerces-c-LINUX-c++-2_2_0 xerces 安装:cp xerces/lib/* /usr/lib |
3. 编译并安装Axis C++
Axis C++目前最新的稳定版本是1.3,从http://www.apache.org/dist/ws/axis-c/source/linux/ 地址上下载最新的1.3版本源码包:axis-c-src-1-3-linux.tar.gz,使用下面的命令来编译并安装Axis C++。
解压:tar zxvf axis-c-src-1-3-linux.tar.gz --directory=/apache 将axis c++源码解压到/apache/axis-c-src-1-3-linux目录下。 设置环境变量: AXISCPP_HOME=/apache/axis-c-src-1-3-linux Axis C++解压后所在的目录 AXISCPP_DEPLOY=/apache/axiscpp Axis C++要安装的目标目录 LD_LIBRARY_PATH=/usr/lib:$AXISCPP_DEPLOY/lib:$LD_LIBRARY_PATH export AXISCPP_HOME AXISCPP_DEPLOY LD_LIBRARY_PATH cd $AXISCPP_HOME 配置:./configure --prefix=$AXISCPP_DEPLOY --with-apache2=/apache/httpd --with-xercesc=/apache/xerces 编译:make (需要几分钟时间) 安装:make install 检验:检查/apache/axiscpp目录下是否生成了Axis C++的目录。 |
到此Axis C++安装完毕,但是还需要经过一些配置步骤才能让其运行,包括配置Apache HTTP Server服务以及Axis C++本身的一些参数。为了方便接下来的配置与开发,建议将前面提到的几个环境变量放在当前用户的配置文件中,以便用户登录后自动设置。
配置Apache模块
打开Apache的配置文件 /apache/httpd/conf/httpd.conf ,添加下面信息到文件中
LoadModule axis_module modules/libaxiscpp_mod2.so
SetHandler axis
如果你的Apache HTTP Server版本是1.3的话,那LoadModule行应该是LoadModule axis_module libexec/libaxiscpp_mod2.so。拷贝$AXISCPP_DEPLOY/lib/ libaxiscpp_mod2.so文件到/apache/httpd/modules,对于1.3版本的Apache应该是libexec目录。
配置Axis C++参数
Axis C++的Web服务的定义文件存放在$AXISCPP_DEPLOY/etc/server.wsdd,所有的Web服务都将在这个文件中定义。刚编译完的Axis C++在etc目录下有一个该配置的样本文件server.wsdd_linux,将它改名为server.wsdd。在这个文件中有很多配置涉及到Axis C++安装路径,其默认的路径是/usr/local/axiscpp_deploy,请打开改名后的配置文件server.wsdd并替换其中的路径/usr/local/axiscpp_deploy为实际的路径/apache/axiscpp然后保存。
关于Axis C++框架本身的配置文件还有一个是axiscpp.conf,同样这个文件在etc目录下也有一个样本axiscpp.conf_linux,同样将该文件改名为axiscpp.conf并替换其中Axis C++的安装路径为当前的路径:/apache/axiscpp。
设置XML解析库:
执行下面命令使Axis使用Xerces来处理XML:
ln -s $AXISCPP_DEPLOY/lib/libaxis_xercesc.so $AXISCPP_DEPLOY/lib/libaxis_xmlparser.so
4. 验证Axis C++的安装
为了尽量减小发生问题的范围,首先利用Axis C++自带的简单服务进行测试,执行 $AXISCPP_DEPLOY/bin/XXXXXX_axis_server 9090 ,打开另外一个终端窗口执行 $AXISCPP_DEPLOY/bin/base http://localhost:9090/axis/base (该地址用浏览器访问没有任何响应,而且此时必须重新XXXXXX_axis_server方可再次使用base程序进行测试,否则base客户端程序也无响应)可以看到整个调用过程如下图所示,如此便可确认Axis C++安装成功。
现在就可以来验证HTTP服务的模块安装是否成功。运行 /apache/httpd/bin/apachectl start 命令来启动HTTP服务,使用浏览器打开网址 http://localhost/axis 后可以列出已经部署的Web服务列表则表示Apache HTTP模块安装正确。
接下来通过Apache HTTP模块来验证Axis C++的Web服务是否正常运行,进入$AXISCPP_DEPLOY/bin目录,执行命令:./base http://localhost/axis/base 正常的结果应该下图所示。
如果出现浏览器无响应同时命令行验证也被堵塞的情况,请停止HTTP服务然后重新启动。其他的错误请检查前面的安装步骤是否有误。
参考资料
Axis官方网站
http://ws.apache.org/axis
《应用AXIS开始Web Service之旅》
http://www-900.ibm.com/developerWorks/cn/webservices/ws-startaxis/index.shtml
《AXIS实现Web服务深入篇》
http://www-900.ibm.com/developerWorks/cn/webservices/ws-deepaxis/
《根据WSDL来生成服务端实现框架》
http://www.javayou.com/showlog.jspe?log_id=407
作者简介
刘冬,一直使用J2EE从事移动业务方面的开发。现在可以通过Java自由人网站来跟我联系,网址是:http://www.javayou.com;另外我的邮件地址是winter.lau@163.com。