我已经使用wso2-wsf-ccp框架编写了一个web服务,并尝试使用axis2_http_server运行它,它运行良好。但在现实生活中,当我们在生产中部署时,我们需要在守护进程模式下运行axis2_http_server。我看不到在守护程序模式下运行axis2_http_server的任何选项。如果可能的话,有人能指导我吗。。?
在Axis2/C下部署web服务的最佳方法是将mod_axis2
用于Apache2。当使用此方法时,Axis2/C将在系统启动时作为Apache2模块启动。
这里和这里是关于如何配置和安装Axis2/C以使用mod_axis2
进行构建的文档。
或者,如果您不能使用mod_axis2,axis2/C可以使用init.d脚本在守护进程模式下启动(它并不完美,但确实有效):
#!/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
将此脚本放置为/etc/init.d/axis2c
,使其可执行并启动:
sudo update-rc.d axis2c defaults
之后,Axis2/C将在每次系统启动时自动加载。
如上所述,现在我正试图在Apache上部署我的web服务(作为一种临时安排,我使用axis2_http_server完成了这一安排),但在我使用apache2和apr头文件编译了wso2_wsf_cpp并尝试使用apache2部署我的web服务并访问浏览器中的URL之后,例如:http://mydomain.com:8080/axis2/services,我没有看到任何事情发生(尽管在浏览器的左角,我看到了这条消息"正在等待mydomain.com",过了一段时间,它也消失了)。我看到的问题是services.xml,我在其中使用了以下类型的描述:
<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,但未能解决此问题。任何见解都将不胜感激。