zoukankan      html  css  js  c++  java
  • 采用axis2c进行webservice发布的流程3通过wsdl文件,自动生成C的服务端代码

    这一部分介绍采用wsdl文件生成axis2c的服务端代码。

    2.1下载axis2-1.4.1的bin版

    此处采用的是axis的1.4.1版本,由1.4.1java版本生成的c代码是对应的axis2c的1.3版本。

    http://archive.apache.org/dist/ws/axis2/1_4_1/axis2-1.4.1-bin.zip下载axis2c的java1.4版本用于生成对应的C代码文件。

    2.2下载axis2c版本

    最新的axis2c的版本是1.6的,而由axis2的java生成的c版本是1.3的,这个后边有介绍。此处采用的axis2c是1.6的,可以兼容生成的代码,axis2c1.7版本的还处于rc阶段。

    Axis2c须要从源码编译,centos6上二进制的安装包不大好找,fedora17有现成的rpm包,直接yum安装就可用,不过没有在此基础上测试过。

    http://www.fayea.com/apache-mirror//ws/axis2/c/1_6_0/axis2c-src-1.6.0.tar.gz  下载linux下的源码包。

    下面需要编译安装axis2c,这里的编译安装参考的是eucalyptus的处理流程。因为最终的服务时要发布在apache中,依照的是eucalyptus的服务模式。具体的编译安装过程如下,也可参考(http://open.eucalyptus.com/wiki/EucalyptusInstallationSource_v2.0):

    A、安装环境centos6.2;

    B、确定apache运行库目录:

    安装httpd httpd-devel apr-devel

    yum install httpd httpd-devel apr-devel

    export APACHE_INCLUDES=/usr/include/httpd/

    export APR_INCLUDES=/usr/include/apr-1/

    C、配置编译选项:

    export AXIS2C_HOME=/opt/axis2c-1.6.0 //设定好要安装的目录

    tar zvxf axis2c-src-1.6.0.tar.gz

    cd axis2c-src-1.6.0

    CFLAGS="-w" ./configure --prefix=${AXIS2C_HOME} --with-apache2=$APACHE_INCLUDES --with-apr=$APR_INCLUDES --enable-multi-thread=no

    在上述的编译选项中,如果选定--enable-multi-thread为no,会出现编译错误,需指明”-w”方可,意思就是取消编译器警告(具体原因还没有查明)。

    D、安装axis2c:

    make ; make install

    至此,axis2c已经安装好了。可以在上简单测试下:

    cd ${AXIS2C_HOME}/bin

    ./axis2_http_server

    查看下服务的运行状态。

     

    2.3生成C代码

    采用axis2c的工具,生成对应的C服务端代码。

    在axis2c的安装目录里${AXIS2C_HOME}/bin/tools/wsdl2c,有编译生成的工具WSDL2C.sh,可以借助于此工具生成客户端和服务端的代码,因为此处只是服务端的开发,故先在此处详细介绍服务端代码的生成方式,客户端代码生成将会在服务测试这部分补充。

    将2.1节中下载下的axis的java版复制到合适的目录下,解压缩,设定好环境变量。

    export AXIS2_HOME=axis目录

    sh ${AXIS2C_HOME}/bin/tools/wsdl2c/WSDL2C.sh -uri dmsserver.wsdl  -sd -ss -d adb -u -uw -f -o generated | grep -v 'the classpath'

    上边的意思就是说依据-uti dmsserver.wsdl这个服务文档,生成了服务端得代码-ss,代码最终生成在-o generated目录下。具体的命令参数可以通过—help查看。

    没有错误的话,就可以在generated文件夹下看到生成的C服务端文件了,剩下的工作也就是在此中添加对应的逻辑处理工作。

    根据我先前生成的wsdl(后期会将代码上传上来),可能会有下面的代码:

    adb_ProductComplete.c

    adb_ProductComplete.h

    adb_ProductCompleteResponse.c

    adb_ProductCompleteResponse.h

    adb_ProductCompleteResponseType.c

    adb_ProductCompleteResponseType.h

    adb_ProductCompleteType.c

    adb_ProductCompleteType.h

    axis2_skel_DmsServer.c

    axis2_skel_DmsServer.h

    axis2_svc_skel_DmsServer.c

    services.xml

    build.sh

    查看下最终的build.sh这个是编译服务的时候用的,不过此时暂时是用不到,暂略去不讲。

     

    其中生成的这些文件分别与wsdl中的元素相对应,对比此处的wsdl,对应关系为:

    "ProductCompleteType"

    adb_ProductCompleteType.c

     

    adb_ProductCompleteType.h

    "ProductCompleteResponseType"

    adb_ProductCompleteResponseType.c

     

    adb_ProductCompleteResponseType.h

    "ProductComplete"

    adb_ProductComplete.c

     

    adb_ProductComplete.h

    "ProductCompleteResponse"

    adb_ProductCompleteResponse.c

     

    adb_ProductCompleteResponse.h

    剩下的这些文件的是axis2c的框架程序和服务程序,具体如下:

    axis2_skel_DmsServer.c

    具体服务的逻辑处理部分

    axis2_skel_DmsServer.h

     

    axis2_svc_skel_DmsServer.c

    Axis2c的框架程序

    services.xml

    部署时服务配置项

    build.sh

    服务编译脚本

    这就是通过wsdl生成服务代码的过程。

  • 相关阅读:
    HihoCoder 1245:王胖浩与三角形 三角形边长与面积
    C++ 读写注册表
    Codestorm:Counting Triangles 查各种三角形的个数
    2015年10月之 叽里咕噜
    HDU 5523:Game
    Codestorm:Game with a Boomerang
    关于GPU-driver for linux的资料
    ACER NV47H75C 安装CUDA 驱动以及调整屏幕
    服务器GTX590安装CUDA
    观后感,读了几篇博文
  • 原文地址:https://www.cnblogs.com/hanxiangduo/p/2647432.html
Copyright © 2011-2022 走看看