【问题标题】:Jersey+Grizzly load-on-startup without web.xml没有 web.xml 的 Jersey+Grizzly 启动时加载
【发布时间】:2017-07-13 16:48:40
【问题描述】:

据此 (servlet response time is slow for first request) SO Question 我可以使用 web.xml 中的 load-on-startup 参数在启动时创建服务类,而不是在第一个客户端请求时创建服务类,这会为客户端带来更好的第一响应时间。

但是我使用的是 Grizzly+Jersey,如何在 grizzly 中配置此行为,或者这完全不可能?那么在不使用成熟的 Java EE 应用服务器的情况下,还有什么替代 grizzly 的方法

编辑:主要主要方法是这样的:

public static void main(String... args){
    //Packages which contain service classes
   final ResourceConfig rc = new ResourceConfig()
            .packages("de.danielr1996.flamingoapi.services");

    //Logging Aktivieren
    rc.register(new LoggingFilter());

    //Dependency Injection konfigurieren
    rc.register(new DependencyBinder());

    //Jackson hinzufügen
    rc.register(JacksonFeature.class);

    //Datenbank initialisieren
    DatabaseUtil.getEntityManagerFactory();

    // Server erstellen
    return GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
}

提前致谢

【问题讨论】:

    标签: java jersey web.xml grizzly


    【解决方案1】:
            ServletAdapter adapter =new ServletAdapter();
            ...
            adapter.setProperty( "load-on-startup", 1 );
    

    更新

    我现在不知道如何配置从工厂创建的实例。我认为它不允许您提供复杂的配置。 但是您可以通过这种方式手动创建服务器:

    GrizzlyWebServer ws = new GrizzlyWebServer(80);
    ServletAdapter adapter = new ServletAdapter();
    

    然后配置适配器Javadocs

    adapter.setContextPath("...");      
    adapter.setRootFolder("...");
    adapter.setHandleStaticResources(true);
    adapter.setProperty("load-on-startup","1");                                                             
    

    将适配器添加到服务器

       ws.addGrizzlyAdapter(adapter, new String[]{"/uri"}); 
    

    【讨论】:

    • 把这个放在哪里(我的主要方法现在在问题中)?
    • @danielr1996 更新
    猜你喜欢
    • 2013-10-28
    • 1970-01-01
    • 2015-04-12
    • 2011-02-25
    • 2016-02-20
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    相关资源
    最近更新 更多