Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1004680
  • 博文数量: 87
  • 博客积分: 3324
  • 博客等级: 中校
  • 技术积分: 1003
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-17 11:37
文章分类

全部博文(87)

文章存档

2014年(3)

2013年(5)

2012年(21)

2011年(13)

2010年(7)

2009年(9)

2008年(4)

2007年(14)

2006年(11)

分类: C/C++

2006-12-15 15:03:37

编译Apache
./configure --enable-so --enable-rewrite
在Apache的配置文件httpd.conf里增加以下配置信息:

RewriteEngine on
RewriteCond %{REQUEST_URI}      !^/index\.html$
RewriteCond %{REQUEST_URI}      !^/fan\.html$
RewriteRule ^/(.*)      /sorry.html
说明:上面用RewriteCond指令说明的是我们能够处理的URI,对于不能处理的,统一重订向到/sorry.html文件。
安装Xerces
export XERCESCROOT=
例如我把Xerces的源码包下载到/usr/local/src下了,并且在此目录解压缩了,那么就设置此环境变量为
XERCESCROOT=/usr/local/src/xerces-c-src2_2_0
在编译的时候,可能会遇到文件RefArrayVectorOf.c文件的编译错误,此时在文件RefArrayVectorOf.hpp里面的类
RefArrayVectorOf里,添加以下代码:
protected:   
    bool            fAdoptedElems;
    unsigned int    fCurCount;
    TElem**         fElemList; 
在$XERCESCROOT/src/xerces目录下,执行
./runConfigure -plinux -cgcc -xg++ -minmem -nsocket -tnative -rpthread
make
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
下载的axis-c-1.6b-Linux-trace-src里面有个bug,就是没有configure文件,可通过运行
sh autugen.sh
 
aclocal和autoconf命令来产生此文件。
编译由WSDL2Ws生成的文件
g++ *.cpp  -shared -I/usr/local/src/axis-c-1.6b-Linux-trace-bin/include -L/usr/local/src/axis-c-1.6b-Linux-trace-bin/lib/axis/libaxis_server.so -o Calculator.so

Axis C++默认读取$AXISCPP_DEPLOY/etc/axiscpp.conf此文件为配置文件
特别注意:在axiscpp.conf文件中配置的路径或者文件,apache一定要有权限去操作,例如apache是以nobody用户来运行的,那么nobody要有权限去操作在axiscpp.conf文件路中配置的路径或者文件。
设置环境变量AXISCPP_STARTUP_TRACE,则打开了Axis C++的跟踪信息记录功能,方便调试。但是此环境变量对应的文件,apache也要有权限去操作。
特别注意:如果访问的时候用访问,则上面出现的wsdl链接是错误的,如果用访问,则上面出现的wsdl链接是正确的。
由wsdl文件生成所需要的文件:
java org.apache.axis.wsdl.wsdl2ws.WSDL2Ws $AXISCPP_DEPLOY/wsdls/Calculator.wsdl -lc++ -sserver -ojizhao
修改里面的实现文件,然后
编译由上面产生的所有cpp文件
 g++ -shared -I/usr/local/src/axis-c-1.6b-Linux-trace-bin/include -o Calculator.so *.cpp

Client端的操作
现把服务对应的wsdl文件复制到当前目录下(可直接复制或者从Web地址上得到,再保存为对应的wsdl文件),然后生成客户端调用需要的stub,其实是对Web Service提供的服务的一个封装,提供了一个封装类,由客户端程序直接使用。
java org.apache.axis.wsdl.wsdl2ws.WSDL2Ws Calculator.wsdl -lc++ -sclient
编写客户端程序,然后编译。
g++ *.cpp -I/usr/local/src/axis-c-1.6b-Linux-trace-bin/include -L/usr/local/src/axis-c-1.6b-Linux-trace-bin/lib/axis -ldl -laxis_client  -oCalculator_Client
#include
#include "Calculator.hpp"
int main()
{
 Calculator cal("http://localhost/axis/Calculator");
 int sum;
 sum = cal.add(10, 20);
 std::cout << "The sum is: " << sum << std::endl;
 return 0; 
}
 
阅读(2253) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~