1
10
要定期打电话,请参见 TimerTask |
3
4
对于在服务器具有高负载时调用方法,至少有两种可能的方法。你的应用服务器可能有管理钩子,你可以监视它的行为并采取程序化的行动。另外,您还有一些系统监控功能(如Tivoli或OpenView),它会生成“事件”,不应该太难传递诸如(例如)JMS消息之类的事件并让您的服务器接收它们。 但是,您可能需要对您想要实现的目标进行更多的解释。自适应应用程序beahviour可能很难纠正。 |
4
2
如果要定期运行某个内容,请不要在Web服务器中执行该操作。在我看来,这是一个非常错误的方法,最好使用
|
5
2
(1)在部署描述符(web.xml)中,定义一个侦听器在启动时启动。
(2)创建一个 Timer 在听众中。
(3)运行一些线程来检查可用Java访问的系统条件,甚至运行系统PROFS(UpTIME等),并解析输出。 CrutAB可以是一种方式,但是Java的执行将启动另一个JVM,这在servlet容器中非常热门:所有运行在同一个JVM中。 |
6
2
不要忘记java.util.concurrent——如果您需要的不仅仅是一个简单的计时器,它有很多用于调度的类,例如scheduledthreadpoolExecutor。 http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/package-summary.html 它还有一个Java 1.4的后端: http://backport-jsr166.sourceforge.net . |
7
2
如果已经使用了Spring,您可能希望了解Spring的任务执行框架-使用@scheduled和@async将方法注释为任务,并在将实际工作委托给工作人员的处理器中实现功能,如中所述: http://blog.springsource.com/2010/01/05/task-scheduling-simplifications-in-spring-3-0/ 优点是,您可以在Spring上下文中使用类似于Cron的语法定义定时器,并且不需要任何特殊的设置任务,它也可以很好地集成到JavaEE应用程序中,并且应该与Web服务器(自定义线程往往不总是这样)很好地配合。 |
8
1
有几种解决方案:a Timer 一个Java的CRON实现 cron4j , Quartz ,甚至是 EJB Timer API .选择一个或另一个高度取决于上下文:应用程序类型、使用的技术、作业数量等。
您可以在工作中使用JMX来访问和监视信息,并在某些特定条件下触发操作。但这更像是一种拉动模式,而不是基于事件的。 |