我正在尝试使用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 :(得分:1)
Eric的回答对于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参数。
答案 1 :(得分:0)
要在org.restlet.Server的实例上设置更高maxThreads
,您可以获取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");
看起来你的错误是你正在抓取Component或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();
}
}