2012-02-15 3 views
1

수 있지만 서버가 너무 많은 스레드까지 제공합니다. 예를 들어 내 서버의 스레드 수를 늘리는 데 도움을 줄 수 있습니까?으로 Restlet 2.0.11 증가 내가으로 Restlet 2.0.11을 사용하여 서버를 실행하려고 스레드

try 
{ 
    Server server = new Server(Protocol.HTTP, m_iPort, ContentProvider.class); 
    server.start(); 
} 
catch (Exception e) 
{ 
    e.printStackTrace(); 
} 

나는 샘플을 검색해야하지만

getContext().getParameters().add("maxThreads", "512"); 

나에게 널 포인터 예외를 제공합니다.

+0

;.'null입니다.? 각 부분을 로컬 변수에 추출하고 null을 확인하십시오. –

+0

확인. 이 작품. org.restlet.Context를 가져와야했습니다. – user1152640

+0

실제로, 좀 더 조사가 끝나면 getContext()는 null을 반환합니다. – user1152640

답변

0

org.restlet.Server의 인스턴스에서 org.restlet.Server의 인스턴스를 더 높게 설정하려면 org.restlet.Server의 인스턴스를 생성 할 때 그 인스턴스를 가져온 다음 컨텍스트를 잡고 매개 변수 목록을 가져온 다음 이 같은 정수로 새로운 속성 maxThreads은 : 당신의 실수는 당신이 구성 요소, 또는 Java 프로그램 자체의 컨텍스트 속성을 잡아 자연스럽게이 무시됩니다 매개 변수를 할당하는 것처럼

import org.restlet.Component; 
import org.restlet.Server; 
//... 
Server server = mycomponent.getServers().add(Protocol.HTTP, "localhost", 9090); 
server.getContext().getParameters().add("maxThreads", "512"); 

것 같습니다.

여기 풀러 예 :

package carpool.serverMain; 

import java.util.ArrayList; 

import org.json.JSONObject; 
import org.restlet.Component; 
import org.restlet.Server; 
import org.restlet.data.Protocol; 

import carpool.common.DebugLog; 
import carpool.configurations.CarpoolConfig; 
import carpool.configurations.EnumConfig.Gender; 
import carpool.dbservice.LocationDaoService; 
import carpool.factory.JSONFactory; 
import carpool.service.*; 



public class ServerMain { 

//private static Log log = LogFactory.getLog(ServiceMain.class); 

private static ServerMain me; 

private Component component; 

public void init(String[] arguments) { 

} 

/** 
    * Start the Thread, accept incoming connections 
    * 
    * Use this entry point to start with embedded HTTP Server 
    * 
    * @throws Exception 
    */ 
public void start() throws Exception { 
    component = new Component(); 

    // Add a new HTTP server listening on port 

    Server server = component.getServers().add(Protocol.HTTP, 8015); 
    server.getContext().getParameters().add("maxThreads", "256"); 

    // Attach the sample application 
    RoutingService routingService = new RoutingService(); 

    component.getDefaultHost().attach(routingService); 

    // Start the component. 
    //log.info("ready to start"); 
    DebugLog.d("ready to start"); 
    component.start(); 

} 

/** 
    * Stops RESTlet application 
    */ 
// public void stop() { 
// component.getDefaultHost().detach(component.getApplication()); 
// } 

public static ServerMain getInstance() { 
    if (me == null) { 
    me = new ServerMain(); 
    } 

    return me; 
} 



public static void main(String... args) throws Exception { 
    CarpoolConfig.initConfig(); 
    DebugLog.initializeLogger(); 
    LocationDaoService.init(); 
    DebugLog.d("Excuting"); 
    // Load server logic 
    try { 
    ServerMain.getInstance().init(args); 
    ServerMain.getInstance().start(); 
    } catch (Exception e) { 
    //log.error("Failed to start server", e); 
    } 
    Thread thread = new CleanThreadService(); 
    thread.start(); 
} 

} 
1

에릭의 대답으로 Restlet 2.0.11을 위해 아마 정확하지만,이 이후 :

http://www.programcreek.com/java-api-examples/index.php?api=org.restlet.data.Protocol

경우 링크에서 프로그램 전체가 다운 Restlet maxThreads에서 여전히 Google과 가장 일치하는 항목이므로 업데이트를 게시해야한다고 생각했습니다. 나도 몰라

은 무엇으로 Restlet/부두의 버전이 변경되지 않지만으로 Restlet 2.3.7은 더 이상 maxThreads와 minThreads 설정을 수여. 이제 호출해야

server.getContext().getParameters().add("threadPool.maxThreads", "256"); 

지금까지 내가 말할 수있는 건,이 코드를 정리하기 좋아하는 기여자에 의해 부두 프로젝트의 화장품 리 팩터가 자신의 라이브러리를 업그레이드 할 때 사용자가 경험하게 될 것입니다 무엇에 대한 관계없이, 아마 . 또한, 부두 (Jetty)는 잘못된 매개 변수에 대해 전혀 경고하지 않는 것 같습니다. 조용히 무시합니다. 이것이 바로 자유형 String-String 매개 변수에 대해보고 싶지 않은 내용입니다.

() ("maxThreads", "512")를 추가`는 getContext()의 일부의 getParameters