如何在系统启动时加载某些东西?我的节目开始时没有“主要”!
答案 0 :(得分:3)
您可以使用Application#getSingletons()
中定义的单个对象。
public class MyApp extends Application
{
public Set<Class<?>> getClasses()
{
return null;
}
public Set<Object> getSingletons()
{
Set<Object> set = new HashSet<Object>();
Foo foo = /* init foo somehow */;
set.add(foo);
return set;
}
}
来自RESTful Java(如果你有这本书,请参阅第142页):
getSingletons()
方法返回预分配的JAX-RS Web服务列表和@Provider
- 带注释的类。作为应用程序员,您负责创建这些对象。 JAX-RS运行时将遍历对象列表并在内部注册它们。注册这些对象后,JAX-RS还会为@Context
带注释的字段和setter方法注入值。
答案 1 :(得分:1)
一般来说,球衣是由maven建造的。因此,当您执行maven命令时,会生成一个初始化项目。
mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 \
-DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \
-DgroupId=com.example -DartifactId=simple-service -Dpackage=com.example \
-DarchetypeVersion=2.4.1
更多信息请参阅: https://jersey.java.net/documentation/latest/index.html
答案 2 :(得分:0)
您可以编写一个实现ServletContextListener的类。
public class MyContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
//stuff that happens when server is started
}
@Override
public void contextDestroyed(ServletContextEvent event) {
//stuff that happens when server is turned off
}
}
然后,您只需将此文件作为web-app元素的子文件添加到您的web.xml文件中。
<listener>
<listener-class>com.mypackage.MyContextListener</listener-class>
</listener>