【问题标题】:webapp deployed twice and quartz job running twicewebapp 部署了两次,quartz 作业运行了两次
【发布时间】:2016-08-22 15:28:20
【问题描述】:

我正在我的 Web 应用程序中运行 quartz 作业,该作业部署在 tomcat 中。但问题是作业执行了两次。

经过一些互联网研究,我发现在 tomcat 的 server.xml 中添加带有 autoDeploy 的新 Host 可能会导致两次部署。我猜这导致我的 quartz 调度程序执行了两次。

我试过autoDeploy = "false"。但问题仍然存在。

这是我的 server.xml 中的主机配置:

<Host name="localhost"  appBase="webapps"
    unpackWARs="true" autoDeploy="false">

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
       prefix="localhost_access_log." suffix=".txt"
       pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

<Host name="demo.example.com" appBase="webapps/demo" unpackWARs="true" autoDeploy="false">
      <Context path="/" docBase="." reloadable="true" />
</Host>

编辑(仅供参考): 我的 cron 表达式:0 50 12 * * ?,计划在每天下午 12:50 运行。

此配置是否会部署我的应用程序两次?我能做些什么来避免这种情况?提前谢谢。

【问题讨论】:

    标签: java tomcat quartz-scheduler


    【解决方案1】:

    如果您的观察确实正确,那么这里可能存在多个问题 -

    1. 除了您在 server.xml 中指定的自定义位置之外,您的应用程序也可能存在于 tomcat/webapps 文件夹中。
    2. 您可能在某个 IDE 中使用热部署并在 IDE 中保存文件可能会重新加载上下文,从而重新初始化石英,这可能会给您留下错误的印象。
    3. 您确实有一些代码问题。

    如果不看代码 sn-p,很难说发生了什么,但这应该是一个相当简单的问题。

    【讨论】:

    • 非常感谢。这不是 2/3。我没有使用任何 IDE 进行部署/没有任何编码问题。不是 1。显然,该应用程序位于 webapps 文件夹中,这就是它被部署两次的原因(作为 localhost 和 demo.example.com)。我将它移到文件夹外,更改了appBasedocBase,它起作用了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多