2012-09-13 2 views
3

우리는 Grizzly와 Jersey를 사용하여 웹 서비스를 구축하고 웹 검색을 통해 학습합니다. 그리즐리 웹 서버를 시작하는 두 가지 다른 방법을 알았지 만 편도가 다른 편보다 낫지는 없습니다. 아무도 도와 줄 수 있니?GrizzlyWebServer를 시작하는 가장 좋은 방법은 무엇입니까?

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

처음에 나는 당신의 방법 # 1을 사용했지만, 그때는 더 복잡한 구성을 제공하는 데 필요한되면, 나는 내가 GrizzlyWebServer 개체에 액세스하는 방법 # 2를 필요로 발견 .

예를 들어 GrizzlyWebServer를 사용하면 작업자 스레드 풀의 크기를 제어 할 수 있습니다. (Grizzly의 문서는 IO 바인딩 작업을 수행하는 것만 권장합니다).

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

나는 그러므로 내가 개선 구성 가능성에 대한 방법 # 2를 권하고 싶습니다, 방법 # 1 스레드 풀 크기를 조정하는 방법을 찾을 수 없습니다.

0

처음에는 메서드 # 1을 사용했지만 더 복잡한 구성을 제공해야 할 때 ServletAdapter 개체에 액세스하려면 메서드 # 2가 필요하다는 것을 알았습니다.

예를 들어 ServletAdapter를 사용하여 시작시로드해야하는지 설정할 수 있습니다.

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

관련 문제