java - 每天在一天中的特定时间运行 Web 服务(从 Tomcat 参数获取时间)

标签 java web-services tomcat soap java-threads

我需要每天在特定时间向许多设备发送 SOAP 消息。我将从 web.xml 中的 tomcat 参数获取时间。类似的东西;

<context-param>
    <param-name>DailyTime</param-name>
    <param-value>04:00</param-value>
</context-param>

我必须创建一个单独的线程来发送消息。时间将采用 24 小时制。

问题是,作为初学者,我不知道从哪里开始或如何开始。你们能否为我指明正确的方向或给我一些提示,这将对我有很大帮助。

谢谢大家:)

最佳答案

您有多种选择。我过去用得最多的两个是:

1) 安排一个 cron 作业在您想要的时间运行,并让它调用一个可执行的 java 类/jar 文件。

2) 使用像 Quartz 这样的调度程序库

关于 #1 - 这假定您使用的是 *nix 系统。如果您使用的是 Windows,则可以通过 Task Scheduler 安排任务.

关于 #2 - 这使您在运行任务/作业的条件上更加灵活。例如,您可以安排一个作业每 1 分钟运行一次,但在任何现有作业完成之前不启动新作业。

来自大约 2006 年 Quartz 版本的轶事评论 - 在 WebSphere 上,我的 quartz 作业似乎是由一些后台线程执行的,这使得作业需要数小时,而本应只需要几秒钟。但那是将近十年前的事了,当然 quartz(希望是 websphere)已经有了很大的改进。

关于java - 每天在一天中的特定时间运行 Web 服务(从 Tomcat 参数获取时间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29491569/

相关文章:

java - 在数据库中存储文件

java - 根据用户输入在 1 到 100 范围内执行二分搜索

java - 在 Java 中的 Jackson JSON 反序列化期间忽略丢失的属性

c# - Visual Studio 2012 "Unable to start debugging"

java - 在 POST 网络服务中作为表单数据访问的 URL 数据

mysql - "Connection timed out"Tomcat与Mysql之间

java - 如何在竞争条件下将主键值插入表中?

c# - 在代码而不是配置文件中将 Message Inspector 添加到 WCF 服务

tomcat - PF 命令按钮在本地工作,但在部署的机器上不调用操作

tomcat - 找不到类 java apache Tomcat