簡體   English   中英

什么是啟動GrizzlyWebServer的最佳方式?

[英]What's the best way to start a GrizzlyWebServer?

我們正在使用Grizzly和Jersey構建Web服務,並通過網絡搜索來學習。 我們注意到了兩種不同的啟動灰熊網絡服務器的方式,但是沒有看到一種方式是否優於另一種方式。 有人可以幫忙嗎?

1 - 使用GrizzlyWebContainerFactory:

 public static void main(String[] args) throws IOException {
 Map initParams = new HashMap();
 initParams.put( "com.sun.jersey.config.property.packages", "net.gilstraps.server" );
 SelectorThread selector = GrizzlyWebContainerFactory
 .create( "http://localhost:9998/", initParams ); //noinspection ResultOfMethodCallIgnored
 System.in.read();
 threadSelector.stopEndpoint();
 System.exit(0);
 }
}

2 - 使用GrizzlyWebServer

 GrizzlyWebServer gws = new GrizzlyWebServer(8080, "/var/www");

// Jersey web resources
 ServletAdapter jerseyAdapter = new ServletAdapter();
 jerseyAdapter.addInitParameter("com.sun.jersey.config.property.packages",
 "com.example");
 jerseyAdapter.setContextPath("/jersey");
 jerseyAdapter.setServletInstance(new ServletContainer());

// Another non-Jersey servlet
 ServletAdapter simpleServletAdapter = new ServletAdapter();
 simpleServletAdapter.setContextPath("/simple");
 simpleServletAdapter.setServletInstance(new SimpleServlet());

// register all above defined adapters
 gws.addGrizzlyAdapter(jerseyAdapter, new String[] {"/jersey"});
 gws.addGrizzlyAdapter(simpleServletAdapter, new String[] {"/simple"});

// let Grizzly run
 gws.start();

那么哪種方式更好?

謝謝--Alex

起初我使用的是方法#1,但是一旦我需要提供更復雜的配置,我發現我需要方法#2才能訪問GrizzlyWebServer對象。

例如,使用GrizzlyWebServer,您可以控制工作線程池的大小。 (我應該注意Grizzly docs只建議這樣做是你有IO綁定工作要做)。

grizzlyWebServer.setCoreThreads(30);
grizzlyWebServer.setMaxThreads(50);

我找不到用方法#1調整線程池大小的方法,因此我建議使用方法#2來改進可配置性。

起初我使用方法#1,但是一旦我需要提供更復雜的配置,我發現我需要方法#2來訪問ServletAdapter對象。

例如,使用ServletAdapter,我們可以設置是否必須在啟動時加載。

jerseyAdapter.setProperty("load-on-startup", 1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM