首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jax rs:我如何在每次服务器重新启动时自动运行一个方法?

Jax rs:我如何在每次服务器重新启动时自动运行一个方法?
EN

Stack Overflow用户
提问于 2015-07-27 18:17:20
回答 2查看 2.7K关注 0票数 2

我已经做了一个jax‘s jersey web服务。当服务器重新启动时,我必须从数据库加载数据。我现在要做的就是调用这个url。

代码语言:javascript
复制
http://localhost:8080/jersey-openshift-quickstart2/logisure/load

它从数据库加载数据,并通过调用一个线程,每隔20秒持续更新一次。基于此数据,其他API功能可以工作。现在,当我将它部署到云上时,我发现服务器每2-3天就会重启一次,所以我需要我的when服务自动调用

代码语言:javascript
复制
http://localhost:8080/jersey-openshift-quickstart2/logisure/load

当我的服务器重新启动时。我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2015-10-09 21:41:23

您可以编写一个从contextInitialized()方法调用您的方法的ServletContextListener。在web.xml中,您可以将侦听器附加到您的webapp应用程序,例如

代码语言:javascript
复制
<listener>
   <listener-class>listeners.MyListener</listener-class>
</listener>

或者,如果您使用的是Java config而不是web.xml,则可以使用Java代码执行相同的操作。

下面是上下文监听器的代码:

代码语言:javascript
复制
package listeners;

public class MyListener implements javax.servlet.ServletContextListener {

   public void contextInitialized(ServletContext context) {
      //load data here
   }
}

这将适用于任何Servlet容器和任何框架(您不需要依赖Jersey)。

票数 3
EN

Stack Overflow用户

发布于 2015-07-27 18:32:41

我猜你启动了一只tomcat?如果是,您可以在web.xml中指定在启动时加载的servlet:

请参阅crunchify中的示例

代码语言:javascript
复制
<servlet>
    <servlet-name>CrunchifyExample</servlet-name>
    <servlet-class>com.crunchify.tutorials.CrunchifyExample</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

如果您使用JBoss和EJB,您还可以检查Timer EJBs -但我不确定您是否可以在启动后立即且只执行一次-或者@Startup annotationhere

使用这些可能性中的一种,您可以从那里调用您的one服务,也可以只实现您在服务中实现的任何内容

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31650520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档