2014-11-02 58 views
0

我正在尝试创建一个简单的RESTful应用程序来帮助人们创建和检索某些对象。该服务的目标是尽快提供这些对象,这就是为什么我在服务器启动时以异步方式“预先创建”对象时考虑作弊的原因。我可以逃避这种模式,因为我知道只有500种不同风格的对象可供人们请求,所以我宁愿让他们随时坐在我的持久性存储(redis)中进行预热,以便在用户要求它,它已准备好提供服务。服务器启动时的异步服务调用

我的问题是围绕如何启用服务器启动时的这种“背景/异步”处理权限(对于像jBoss/tomcat这样的服务器,用Java编写的RESTful服务)。把它放在类服务结果中的静态块中是行不通的,所以我想知道catalina文件中是否有一个配置可以链接到加载一个可以满足需要的类的类。

+0

为什么要预先创建它们?这似乎是因为你正在解决设计缺陷。你期待什么类型的回应? – 2014-11-02 01:20:10

+0

我试图预先创建它们,因为它需要大约30秒来创建每个对象。我对提供RESTful Shim不感兴趣,我想提供一些速度,所以如果有机会在空闲的背景中占用一些“空白”,我的服务可以工作并生成这些对象,那么我想为它拍摄。 无论是否是最佳设计,是否有一种简单的方法来触发服务器启动时的一些代码? – BSJ 2014-11-02 04:27:45

回答

1

我想你可能会在你的web.xml文件中寻找load-on-startup,然后如果你在HttpServlet类中使用Init方法,你可能会得到你想要的行为。

Load-on-startup是一个指示,指示容器在启动时立即启动该类。

<servlet> 
    <servlet-name>ServletOne</servlet-name> 
    <servlet-class>com.yourcomp.MainServlet</servlet-class> 
    <description>This servlet is an example servlet</description> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
+0

这就是我一直在寻找的!顺便说一句,考虑到我有一个相对昂贵的过程,我想运行(也就是说我不希望我的服务器启动时间为10分钟),以异步方式结束繁重的处理是合理的,这样我的服务器可以一旦它被及时初始化,仍然“服务”请求? – BSJ 2014-11-04 06:36:47

+0

是的,让Init方法创建一个开始执行重处理的线程。 – 2014-11-04 22:58:58