- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们在 Tomcat 6 上部署了一个应用程序。它基于 Spring/Struts 2 构建,并安排了多个 Quartz 任务。
我们希望将一些任务从 Quartz 转移到 Linux 的 cron 上,尽可能减少编码量。我如何在 Tomcat 容器之外和独立的 Java 应用程序中运行那些 Spring/Quartz 任务?
(更新:因为有人想知道我们为什么要这样做)
我们想将计划任务移动到它们自己的 Java 应用程序中,因为我们的 Tomcat 一直在我们身上死去。没有错误记录。我们怀疑我们拥有的这个巨大的 Quartz 任务是罪魁祸首,但无论是因为内存泄漏还是由于设置不正确导致我们的 Tomcat 段错误,我们仍然不知道。
我们想通过将它踢出Tomcat容器来隔离它,看看Tomcat是否还会断断续续死掉。然而,由于该应用程序已经上线(虽然处于封闭测试阶段),我们希望用最少的编码工作来解决这个问题,同时仍然保持它运行(因为,你知道,“新代码,新问题”——仅供引用,我们已经在考虑重写/重新设计,但“救火”现在是一个更紧迫的问题)。
最佳答案
我不熟悉 Quartz,但我熟悉 stuts2 和 cron。
通常在 Linux 中,您使用 cron 调用单独的进程,因此我认为最好将 quartz 作业减少到单独的独立程序中。考虑到您的项目的 Java EE 性质以及对通过 spring 获取服务的依赖,我认为这不是一个特别有吸引力的选择。
我在 PHP 中见过但在 struts2 中同样适用的第二条路线是使用 lynx 调用特定的 url,这可能会触发类似以下的工作:
*/15 * * * * lynx -dump http://localhost/MyApp/MyAction
它会每 15 分钟调用一次您的操作(转储选项阻止 lynx 进入交互模式,只是将输出转储到标准输出,因此程序只会运行一会儿),然后可以运行您的作业。然后你会想要查看 iptables(或类似的)来限制对那些你不想从外部访问的服务的访问。您也可以在 struts2 中执行此操作,方法是将所有这些操作放在一个包中,并制作一个拦截器来检查请求者是否是本地主机。
我认为第二种方法需要的更改最少。
关于java - 如何在 Tomcat 之外运行 Tomcat-Spring/Struts 2-Quartz 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9125814/
我是一名优秀的程序员,十分优秀!