2013-08-02 72 views
0

我已经使用wso2-wsf-ccp框架编写了一个web服务,并尝试使用axis2_http_server运行它,它工作正常。但在现实生活中,当我们在生产中部署时,我们需要以守护进程模式运行axis2_http_server。我没有看到任何选项在守护进程模式下运行axis2_http_server。有人可以指导我,如果有可能这样做..?我可以在守护进程模式下运行axis2_http_server吗?

回答

0

在Axis2/C下部署Web服务的最佳方法是为Apache2使用mod_axis2。当使用这种方法时,Axis2/C将在系统启动时作为Apache2模块启动。

Herehere是关于如何配置和安装Axis2/C以使用mod_axis2构建的文档。

#!/bin/sh -e 
### BEGIN INIT INFO 
# Provides:   axis2c 
# Required-Start: $local_fs $network 
# Required-Stop: 
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: Start Axis2/C application server 
### END INIT INFO 

case "$1" in 
    start) 
    LOGFILE=/var/log/axis2c.log 
    touch $LOGFILE 
    chown daemon $LOGFILE 
    export AXIS2C_HOME=/usr/local/axis2c 
    cd $AXIS2C_HOME/bin 
    sudo -Enu daemon sh -c "./axis2_http_server >$LOGFILE 2>&1 &" 
    ;; 

    stop) 
    killall -INT axis2_http_server 
    ;; 

    restart|force-reload) 
    $0 stop 
    $0 start 
    ;; 

    *) 
    echo "Usage: $0 {start|stop|restart|force-reload}" >&2 
    exit 1 
    ;; 
esac 

将这个脚本:

或者,如果你不能使用mod_axis2,Axis2的/ C可以在守护进程模式使用这个脚本init.d中(它并不完美,但没有工作)开始如/etc/init.d/axis2c,使其可执行文件,并开始:

sudo update-rc.d axis2c defaults 

Axis2所后/ C会被自动加载在每次系统启动时。

+0

@lonetar,我尝试使用mod_axis2使用apache2进行部署,它已经工作了,但是,在我的代码中,我使用的是单例类,并且我观察到每次向网络发送新请求时都会创建单例类的实例-服务。我还不知道apache2的行为如何,即每次收到新请求时是否重新加载模块。因为,现在我很匆忙,因为我的团队中的其他人因Web服务不可用而被阻止。所以我决定继续并使用axis2_http_server(在开发我的web服务时使用的axis2_http_server)进行部署。 –

+0

但是,您建议的替代解决方案现在对我来说非常合适。稍后我会研究apache2问题。 –

0

如上所示,现在我试图在Apache上部署我的web服务(作为使用axis2_http_server完成的转换安排),但在编译wso2_wsf_cpp与apache2和apr头文件并尝试部署我的web - 服务与apache2,并访问浏览器中的网址,例如:http://mydomain.com:8080/axis2/services,我没有看到任何事情发生(虽然在浏览器的左下角我看到这条消息“等待mydomain.com”,并且这也消失后时间)。我看到的问题是,我使用下面的一种描述中声明。:

<service name="imaservice"> 
    <parameter name="ServiceClass" locked="xsd:false">imaservice</parameter> 
    <description> 
     IMA service interfaces 
    </description> 

    <operation name="registeruser"> 
     <parameter name="RESTMethod">POST</parameter> 
     <parameter name="RESTLocation">registeruser</parameter> 
     <messageReceiver class="wsf_cpp_msg_recv" /> 
    </operation> 
</service> 

我在此行中发现问题:“” 当我注释此行了,我能浏览这些服务,但在调用Web服务时,我会看到错误代码“500”。

我发现互联网上的wso2_wsf_cpp框架没有太多的帮助。我在这方面做了很多R & D,但一直没能解决这个问题。任何见解将不胜感激。

相关问题