我已经做了一个jax‘s jersey web服务。当服务器重新启动时,我必须从数据库加载数据。我现在要做的就是调用这个url。
http://localhost:8080/jersey-openshift-quickstart2/logisure/load它从数据库加载数据,并通过调用一个线程,每隔20秒持续更新一次。基于此数据,其他API功能可以工作。现在,当我将它部署到云上时,我发现服务器每2-3天就会重启一次,所以我需要我的when服务自动调用
http://localhost:8080/jersey-openshift-quickstart2/logisure/load当我的服务器重新启动时。我该怎么做呢?
发布于 2015-10-09 21:41:23
您可以编写一个从contextInitialized()方法调用您的方法的ServletContextListener。在web.xml中,您可以将侦听器附加到您的webapp应用程序,例如
<listener>
<listener-class>listeners.MyListener</listener-class>
</listener>或者,如果您使用的是Java config而不是web.xml,则可以使用Java代码执行相同的操作。
下面是上下文监听器的代码:
package listeners;
public class MyListener implements javax.servlet.ServletContextListener {
public void contextInitialized(ServletContext context) {
//load data here
}
}这将适用于任何Servlet容器和任何框架(您不需要依赖Jersey)。
发布于 2015-07-27 18:32:41
我猜你启动了一只tomcat?如果是,您可以在web.xml中指定在启动时加载的servlet:
请参阅crunchify中的示例
<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 annotation或here
使用这些可能性中的一种,您可以从那里调用您的one服务,也可以只实现您在服务中实现的任何内容
https://stackoverflow.com/questions/31650520
复制相似问题