2013-08-02 46 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,但一直沒能解決這個問題。任何見解將不勝感激。