Рестлет 2.0.11 увеличивает количество потоков - PullRequest
1 голос
/ 15 февраля 2012

Я пытаюсь запустить сервер с помощью рестлета 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"); 

Дает мне исключение нулевого указателя.

Ответы [ 2 ]

1 голос
/ 16 декабря 2016

Ответ Эрика, вероятно, был верным для Restlet 2.0.11, но, поскольку это все еще лучший результат поиска Google для Restlet maxThreads, я решил опубликовать обновление.

Я не знаю, какая версия Restlet/ Jetty это изменилось, но Restlet 2.3.7 больше не учитывает настройки maxThreads и minThreads.Теперь вы должны позвонить

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

Насколько я могу судить, это, вероятно, косметический рефактор в проекте Jetty от участника, который любит чистить код, без учета того, что пользователи будут испытывать при обновлении.их библиотеки.Кроме того, Jetty, похоже, не предупреждает вас о недопустимых параметрах вообще.Он просто молча игнорирует их.Это именно то, что вы не хотите видеть для параметров свободной строки String-String.

0 голосов
/ 13 сентября 2016

Чтобы установить maxThreads выше для экземпляра org.restlet.Server, вы получаете экземпляр org.restlet.Server в качестве возвращаемого при его создании, затем вы получаете его Context, захватывает список параметров и назначьте новое свойство maxThreads с целым числом, например:

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

Похоже, ваша ошибка заключалась в том, что вы захватили контекстные свойства компонента или самой Java-программы и, естественно, присвоение параметров там будет игнорироваться.

Более полный пример здесь:

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

Вся программа в случае сбоя связи:

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

}
...