我有一个在tomcat上运行的Web应用程序,并将其状态报告给另一个监视应用程序(此监视应用程序监视系统中的其他几个进程)。
如果应用程序在tomcat中成功部署,监控应用程序会显示该应用程序是实时且可操作的。
但是,如果tomcat无法侦听Connector
中serer.xml
元素中配置的端口,则仍会部署应用程序,因此它在监视应用程序中显示为实时。但是,由于Web服务器没有在配置的端口上侦听,因此用户无法实际访问Web应用程序。
有没有办法可以配置tomcat,以便在服务器端口无法侦听时终止(或至少不部署webapps)?
答案 0 :(得分:1)
我发现这个gist可能会帮助你实现绑定到Tomcat的init
事件的逻辑并检查其组件的状态(根据要点中的注释,你可能已经找到了一个相同的maven工件。
创建一个生命周期监听器,类似ConnectorListener
,并使其实现LifeCycleListener
接口。然后将要点中的代码放入覆盖的lifeCycleEvent
方法中(您应该进行一些调整以使其适合)。
然后将其添加到web.xml
标记下的<engine>
。
答案 1 :(得分:0)
您可以在{tomcat_setup}/bin/startup.sh
文件中编写一些脚本。
在包含EXECUTABLE=catalina.sh
的行后添加以下脚本。
parent=`dirname "$PRGDIR"`
file="$parent"/conf/server.xml
host=`hostname`
#get ports from server.xml
for i in `grep -o "<Connector port=\".*\"" "$file" | cut -d\" -f2`;
do
#check port is listening
ret=`cat < /dev/null > /dev/tcp/"$host"/"$i"`
if [ $? -eq 0 ]; then
echo "Tomcat is already working!"
exit 1
fi
done