是否有一种简单的方法可以让Apache Tomcat在部署后自动重启?

时间:2008-09-19 20:11:10

标签: java jsp tomcat cruisecontrol

我们的项目使用Cruise Control将Web应用程序构建和热部署到远程服务器(通过FTP),以.war文件的形式运行Tomcat。遗憾的是,“热”部署似乎无法正常工作,导致我们重新启动Tomcat以响应每个部署。我们真的很喜欢自动魔术,就像构建本身一样。有一个简单的方法吗?

旁注:两台机器都运行Windows(我认为是XP或服务器)。

旁注2:表现并不重要。这是一个集成框。

8 个答案:

答案 0 :(得分:1)

如果您有定期安排的构建,您可以轻松地在cron中添加一些内容

crontab -e

然后在凌晨1:30停止tomcat

30 1 * * * ./path_to_tamcat/bin/catalina.sh stop

然后在2分钟后再次启动

32 1 * * * ./path_to_tamcat/bin/catalina.sh start

授予此功能不适合不规则部署,但您可以轻松定期重新启动定期部署。

答案 1 :(得分:1)

如果你看一下bin目录中的tomcat启动和关闭.bat(或.sh)脚本,你会看到他们实际运行一个java进程来启动tomcat或者在关闭的情况下,连接到tomcats shutdown port - 请参阅conf目录中的server.xml。 您可以将build ant任务配置为以与脚本相同的方式调用tomcat jar。

答案 2 :(得分:1)

tomcat是否已注册为Windows服务?

如果是这样,只需使用netstart和netstop编写.bat脚本,并将被调用作为部署过程的最后一步。

答案 3 :(得分:0)

对我来说听起来有点像你正在使用小Tomcat部署管理器的事情。我基本上没有这方面的经验,只是你知道。也就是说,在我工作的地方,我们使用两种设置。

在server.xml文件中,上下文的属性为 reloadable =“true”

我们所要做的就是将WAR文件放在正确的位置,然后Tomcat将其解压缩并重新加载,没问题。

现在,当我查找时,official configuration reference说:

  

“此功能在应用程序开发期间非常有用,但它需要大量的运行时开销,不建议在已部署的生产应用程序上使用。”

像我说的那样,我们从未遇到过问题。我们的系统处理大量请求,我们似乎没有问题。我们从未对这两种配置进行基准测试。

你可能想尝试一下。至少你会学到它是否足够快乐,以这种方式重新加载东西。您也可以检查性能,看看它是否适合您。

我应该注意,每隔一段时间事情都不对,我们无论如何都要重启Tomcat,但这种情况比较少见。

如果这样做,您需要做的就是让脚本在正确的位置复制WAR并监视以确保工作正常。在足够的部署之后,Tomcat将耗尽permgen空间,因此您必须意识到您可能需要手动重启Tomcat。

其他随机猜测:

  1. 您是否直接进入最终的WAR位置?也许Tomcat只是想过早打开它?
  2. 您收到任何错误消息吗?也许这可以帮助你追踪问题?
  3. 您是否尝试过其他版本的Tomcat(如果可用)?也许5.5没有问题(或5.0如果你在5.5)?也许只是一个新的点发布?

答案 4 :(得分:0)

您使用的是什么版本的tomcat? 究竟是什么让它看起来好像“热”部署不起作用?

答案 5 :(得分:0)

再装= “真”

不支持重新部署war-files(这将自动运行),它可以监视WEB-INF / classes和WEB-INF / lib中文件的更改,这可能不是你想要的。

大多数情况下,当Tomcat中的war-files重新部署冻结时,我能够将其追溯到类加载器泄漏,请参阅Classloader leaks: the dreaded "java.lang.OutOfMemoryError: PermGen space" exception

答案 6 :(得分:0)

您没有详细说明为什么您的热部署“无法正常工作”,但是如果它实际上是由/WEB-INF/lib中的资源锁定(这不是一个不常见的原因;您看到这个通常使用JavaMail API的mail.jar,然后只需将Context的{​​{1}}属性设置为antiResourceLocking。以下是webapp true的示例:

/META-INF/context.xml

答案 7 :(得分:0)

一种在启动时启动tomcat的方法是使用cron使用@reboot属性运行它:

打开一个终端并输入:

sudo crontab -e

在文件末尾输入命令:

@reboot /`PATH_TO_WHERE_TOMCAT_INSTALLED`/bin/startup.sh

保存文件并退出。

每次计算机启动时,以上命令都会运行该命令。