创建无限运行的基于事件的java程序

创建无限运行的基于事件的java程序,java,android,Java,Android,我是这个领域的新手,我对如何实现以下目标一无所知 我举一个例子来解释这一点。我需要一个java代码,它在某个事件上调用RESTAPI。该事件可以是一个日常事件,比如每天中午或管理员注册新事件时点击api。我可以写这段代码,但这段代码应该永远运行,也就是说,无论何时发生事件,它都应该触发api,因此据我所知,它必须放在服务器上 现在我不知道该怎么做。我已经读到,我可以创建一个servlet,请求和响应对象不会做任何事情,因为它将是一个web应用程序,因此它将始终在web服务器上的tomcat容器中

我是这个领域的新手,我对如何实现以下目标一无所知

我举一个例子来解释这一点。我需要一个java代码,它在某个事件上调用RESTAPI。该事件可以是一个日常事件,比如每天中午或管理员注册新事件时点击api。我可以写这段代码,但这段代码应该永远运行,也就是说,无论何时发生事件,它都应该触发api,因此据我所知,它必须放在服务器上

现在我不知道该怎么做。我已经读到,我可以创建一个servlet,请求和响应对象不会做任何事情,因为它将是一个web应用程序,因此它将始终在web服务器上的tomcat容器中运行,我可以将我的全部代码都放在那里。但我不知道这是否是我解决问题的正确方法

编辑 我正在尝试实现一个调用Google云消息api的服务器,因此它必须向所有注册用户发送推送通知,用户详细信息在mysql服务器中。此服务器的管理员有权注册新事件,如他需要发送的所有通知(假设他只想向所有注册用户发送一次通知,如新年快乐),或说他想在特定时间发送每日通知(如早上好)。现在这些事件必须由服务器注册和监听,在事件发生时,服务器只需创建一个JSONObject并调用GCM服务。另外,请指导我如何在服务器上部署它

希望现在一切都清楚了


PS:如果这个问题看起来很荒谬,请见谅新手,帮助我学习。

虽然这是程序员的问题,但exchange的架构可能是这样的:

您可以挖掘java计时器并安排(每日)事件来调用RESTAPI

对于接受和安排新事件以及可能删除旧事件,您需要管理员可以使用的界面。这可以正确地说是一个servlet,其表单显示所有计划事件并删除其中一些事件或RESTAPI端点(因此管理员应该使用类似wget的东西来点击它)


如果希望服务器重新启动,则可以使用数据库来持久化事件,否则可以使用内存中的数组变量来保存事件

虽然这是程序员的问题,但架构可能是这样的:

您可以挖掘java计时器并安排(每日)事件来调用RESTAPI

对于接受和安排新事件以及可能删除旧事件,您需要管理员可以使用的界面。这可以正确地说是一个servlet,其表单显示所有计划事件并删除其中一些事件或RESTAPI端点(因此管理员应该使用类似wget的东西来点击它)


如果希望服务器重新启动,则可以使用数据库来持久化事件,否则可以使用内存中的数组变量来保存事件

无需将其作为服务器运行——普通Java应用程序也可以无休止地运行。除此之外,一切都取决于你希望支持什么样的活动。这里的重点应该是让你的应用程序在大部分时间里都能等待中断。首先,你的RESTAPI必须一直可用,这样才能正常工作。其次,您的事件必须调用API。你能更具体地描述一下这类事件吗?这并不荒谬,但并不清楚。请详细说明预期输入(您希望如何通知您的应用程序)和预期输出(您的“永远运行”应用程序如何处理给定输入)。试着描述一下真正的问题,不需要像服务器一样运行它——一个普通的Java应用程序也可以无休止地运行。除此之外,一切都取决于你希望支持什么样的活动。这里的重点应该是让你的应用程序在大部分时间里都能等待中断。首先,你的RESTAPI必须一直可用,这样才能正常工作。其次,您的事件必须调用API。你能更具体地描述一下这类事件吗?这并不荒谬,但并不清楚。请详细说明预期输入(您希望如何通知您的应用程序)和预期输出(您的“永远运行”应用程序如何处理给定输入)。试着描述一下真正的问题。我得到了使用java定时器的部分,但我不能在我的机器上运行代码,让调度器运行我需要它在服务器上运行。如何进行这项工作,tomcat是否足以将我的普通旧java代码部署到服务器上,或者必须研究其他服务器,如glassfish。请帮助我们如何在服务器上部署一个简单的java代码,它有计时器和其他东西,这样它就可以无休止地运行。我想你们需要动手编程了。Tomcat、Glassfish或任何其他应用服务器都没有什么区别。我的意思是,应该如何做才能调用它。应该将代码填充到默认servlet的init方法中的单独线程中,还是执行其他操作?是的,您需要生成一个后台线程。查看或(只是一个随机快速搜索),但也要研究如何为您的特定应用程序服务器执行此操作。我获得了使用java计时器的部分,但我无法在我的计算机上运行代码并让调度程序运行我需要它在服务器上运行如何执行此操作,tomcat是否足以将我简单的旧java代码部署到服务器上,或者必须研究其他服务器,如glassfish。请帮助我们如何在服务器上部署一个简单的java代码,它有计时器和其他东西,这样它就可以无休止地运行。我想你们需要动手编程了。Tomcat、Glassfish或任何其他应用服务器都没有什么区别。我的意思是,应该如何做才能调用它。应该将代码填充到默认servlet的init方法中的一个单独线程中,还是应该