3

私たちは、Grizzly と Jersey を使用して Web サービスを構築しており、その過程で Web 検索を行って学習しています。グリズリー Web サーバーを起動する 2 つの異なる方法に気付きましたが、一方の方法が他方よりも優れているかどうかはわかりません。誰でも助けてもらえますか?

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();

では、どの方法が良いでしょうか?

ありがとう -- アレックス

4

2 に答える 2

1

最初はメソッド#1を使用していましたが、より複雑な構成を提供する必要があると、GrizzlyWebServerオブジェクトにアクセスするためにメソッド#2が必要であることがわかりました。

たとえば、GrizzlyWebServerを使用すると、ワーカースレッドプールのサイズを制御できます。(Grizzlyのドキュメントでは、IOバウンドの作業を行う必要があるため、これを行うことのみを推奨していることに注意してください)。

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

方法1でスレッドプールのサイズを調整する方法が見つからなかったため、構成性を向上させるために方法2をお勧めします。

于 2012-10-09T11:14:46.540 に答える
0

最初は方法 1 を使用していましたが、より複雑な構成を提供する必要が生じたとき、ServletAdapter オブジェクトにアクセスするには方法 2 が必要であることがわかりました。

たとえば、ServletAdapter を使用して、起動時にロードする必要があるかどうかを設定できます。

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

于 2016-06-02T13:08:28.997 に答える