Java 从Jenkins在控制台上启动Tomcat

Java 从Jenkins在控制台上启动Tomcat,java,tomcat,batch-file,jenkins,Java,Tomcat,Batch File,Jenkins,我有一个启动Tomcat的批处理文件,如下所示(在Windows上运行时,它工作正常) 批处理文件从Jenkins调用,如下所示 在构建结束时,Jenkins控制台中出现了这个错误 D:\jenkins\workspace\Start 3T2>start C:\Users\root\tomcat\tomcat2\bin\startup.bat Process leaked file descriptors. See http://wiki.jenkins-ci.org/display/

我有一个启动Tomcat的批处理文件,如下所示(在Windows上运行时,它工作正常)

批处理文件从Jenkins调用,如下所示

在构建结束时,Jenkins控制台中出现了这个错误

D:\jenkins\workspace\Start 3T2>start C:\Users\root\tomcat\tomcat2\bin\startup.bat 
Process leaked file descriptors. See http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build for more information
Finished: SUCCESS
当我检查任务管理器时,我看到服务器在后台启动。我需要在控制台中启动Tomcat

这就是我所做的:

  • 我在jenkins-slave.xml中添加了
    -Dhudson.util.ProcessTree.disable=true
    用于启动詹金斯奴隶服务
  • 我在startup.bat中添加了set BUILD_ID=dontkillme来阻止Jenkins 最后停止进程
我认为Tomcat最终可以正确启动,但不能在控制台中启动。我正在运行Windows 2012 server/Tomcat7/Jenkins 1.578


您知道如何在控制台中启动Tomcat吗?

好的,如果您试图在Jenkins配置为服务的给定机器上启动Tomcat控制台,它将无法工作。要使其工作,您必须使用
JNLP
连接到给定的机器。如果它是一个独立的系统,并且您希望使用Jenkins打开Tomcat控制台,那么您必须在同一台机器上设置一个
从机
,也需要使用JNLP(
通过Java Web Start启动从机代理
)在
Jenkins>managejenkins>managenodes>Slave Node的Configure
页面的
Launch method
部分中

您可以使用下面显示的任何方法连接到从属设备。配置从属节点并单击保存后,您将看到以下选项。我从Win命令提示符运行高亮显示的命令。在我的设置中,我在同一台机器上配置了主设备和从设备。我赢了7台专业64位笔记本电脑

运行该命令后,您将看到一个小窗口,该窗口将弹出并显示“已连接”消息,如下所示:

至少对我来说,我检查了
hudson.util.ProcessTree.disable=true
&
BUILD\u ID
参数是否是必需的。我唯一需要的是确保以下属性未设置:
HUDSON\u SERVER\u COOKIE


注意:您可能必须确保在重新启动时启动JNLP。启动脚本可以做到这一点。另外,确保您的项目/作业绑定到使用
JNLP
机制运行的给定从机。

AFAIK,如果您试图在配置了Jenkins服务的给定机器上启动Tomcat控制台,它将无法工作。要使其工作,您必须使用
JNLP
连接到给定的机器。如果它是一个独立的系统,并且您希望使用Jenkins打开Tomcat控制台,那么您必须在同一台机器上设置一个
从机
,也需要使用JNLP(
通过Java Web Start启动从机代理
)在
Jenkins>managejenkins>managenodes>Slave Node的Configure
页面的
Launch method
部分中

您可以使用下面显示的任何方法连接到从属设备。配置从属节点并单击保存后,您将看到以下选项。我从Win命令提示符运行高亮显示的命令。在我的设置中,我在同一台机器上配置了主设备和从设备。我赢了7台专业64位笔记本电脑

运行该命令后,您将看到一个小窗口,该窗口将弹出并显示“已连接”消息,如下所示:

至少对我来说,我检查了
hudson.util.ProcessTree.disable=true
&
BUILD\u ID
参数是否是必需的。我唯一需要的是确保以下属性未设置:
HUDSON\u SERVER\u COOKIE



注意:您可能必须确保在重新启动时启动JNLP。启动脚本可以做到这一点。另外,请确保您的项目/作业与使用
JNLP
机制运行的给定从机相关联。

我对此非常着迷,因为shutdown.sh是从Windows Master Jenkin-->Linux slave Jenkins运行的,但startup.sh不是在我的Linux slave Jenkins上运行的,尽管startup.sh执行显示了成功消息,由于任何地方都没有日志,因此很难进行故障排除,不确定在运行startup.sh之前设置“export HUDSON_SERVER_COOKIE=”的方式和原因。无论如何,非常感谢。

我对此非常着迷,因为shutdown.sh在Windows Master Jenkin-->Linux Slave Jenkins上工作,但startup.sh没有在我的Linux Slave Jenkins上运行,尽管startup.sh执行显示了成功消息,因为到处都没有日志,很难进行故障排除,不知道如何以及为什么进行设置“导出HUDSON\u服务器\u COOKIE=“就在运行startup.sh之前,它工作了。无论如何,非常感谢。

这是一个
主从
设置还是一个独立的Jenkins?Linux上的主从和Windows Server 2012上的从您是否尝试过这个建议?还没有。我没有找到在生产应用程序中重新启动的适当时间。我今晚可能会试试,然后告诉你哦…好的。好吧,如果是生产,那么我同意,有相当多的限制。:)这是一个
主从设置还是一个独立的Jenkins?Linux上的主从和Windows Server 2012上的从您是否尝试过这个建议?还没有。我没有找到在生产应用程序中重新启动的适当时间。我今晚可能会试试,然后告诉你哦…好的。好吧,如果是生产,那么我同意,有相当多的限制。:)好的,当从机代理按照您描述的JNLP启动时,这就可以工作了。现在,有没有办法避免错误地关闭从属代理窗口?有一种方法。您可以将窗口发送到系统托盘。这将避免意外终止。为此,您必须安装名为
4t Tray Minimizer
的实用程序。谷歌。它是免费的。我刚刚试过,效果很好。谢谢你。我能够通过创建一个从并尝试再次运行来验证这是否是我的问题。然而
D:\jenkins\workspace\Start 3T2>start C:\Users\root\tomcat\tomcat2\bin\startup.bat 
Process leaked file descriptors. See http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build for more information
Finished: SUCCESS