泽西岛建设者

时间:2011-04-12 14:59:40

标签: java constructor jersey startup

如何在系统启动时加载某些东西?我的节目开始时没有“主要”!

3 个答案:

答案 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>