1.自带的pool
QueuedThreadPool pool = new QueuedThreadPool(); pool.setMinThreads(Integer.parseInt(PropertiesUtil.getValue("api_threadpool_min_size"))); pool.setMaxThreads(Integer.parseInt(PropertiesUtil.getValue("api_threadpool_max_size"))); pool.setMaxIdleTimeMs(200); SelectChannelConnector connection0 = new SelectChannelConnector(); connection0.setPort(Integer.parseInt(PropertiesUtil.getValue("jetty.port"))); connection0.setMaxIdleTime(10000); server.setThreadPool(pool);
小技巧:
这里可以设置只接受的线程数,如果超过,那么等待的线程立刻回复busy
if (pool.getThreads() >= pool.getMaxThreads()) { WritePrint(response, "<?xml version=\"1.0\"?><Request><ErrorCode>2</ErrorCode><ResponseMsg>System is busy</ResponseMsg></Request>"); logger.info("Return response:<?xml version=\"1.0\"?><Request><ErrorCode>2</ErrorCode><ResponseMsg>System is busy</ResponseMsg></Request>"); return; }
public void WritePrint(HttpServletResponse response, String outWriter) { try { PrintWriter out = response.getWriter(); out.println(outWriter); out.flush(); out.close(); } catch (IOException e1) { e1.printStackTrace(); } }
注意:jetty主线程占一条,最后等于max thread的线程会rejected,所以实际执行的线程数是(设置的MAX线程-2)
2.第三方pool
先建立pool类
public class ThreadPool { private static Logger logger = LoggerFactory.getLogger(IrapiServer.class); private ThreadPool() {} private static ThreadPoolExecutor pool; public static void initThreadPool(ThreadPoolExecutor pool){ ThreadPool.pool = pool; } public static ThreadPoolExecutor createThreadPool() { int corePoolsize = Integer.valueOf(PropertiesUtil.getValue("api_threadpool_min_size")); int maximumPoolSize = Integer.valueOf(PropertiesUtil.getValue("api_threadpool_max_size")); BlockingQueue<Runnable> queue = new LinkedBlockingQueue<Runnable>(); logger.info("create thread pool: corePoolsize=" + corePoolsize + ", maximumPoolSize=" + maximumPoolSize); ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor( corePoolsize, maximumPoolSize, 1, TimeUnit.SECONDS, queue, new ThreadPoolExecutor.CallerRunsPolicy()); return threadPoolExecutor; } public static ThreadPoolExecutor getThreadPool(){ return ThreadPool.pool; } }
然后在主方法中调用:
ThreadPool.initThreadPool(ThreadPool.createThreadPool());
最后,service类要继承线程类,然后执行:
ThreadPool.getThreadPool().execute(irapiServiceHandler);
这样设置等待线程的线程立刻rejected:
if ((ThreadPool.getThreadPool().getTaskCount() - ThreadPool.getThreadPool().getCompletedTaskCount()) >= maximumPoolSize) { WritePrint(response, "<?xml version=\"1.0\"?><Request><ErrorCode>2</ErrorCode><ResponseMsg>System is busy</ResponseMsg></Request>"); logger.info("Return response:<?xml version=\"1.0\"?><Request><ErrorCode>2</ErrorCode><ResponseMsg>System is busy</ResponseMsg></Request>"); return; }
相关推荐
Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它允许开发者将Web服务器功能直接嵌入到Java应用程序中,...通过深入理解并实践Jetty的多种实现方式,开发者能够更好地掌控Web应用程序的生命周期和性能。
在这个“用jetty8.0写的websocket实现的简单聊天程序”中,我们将深入探讨如何利用Jetty 8.0这个轻量级、高性能的Java Web服务器和Servlet容器来构建WebSocket应用。 Jetty是一个开源的HTTP服务器和Servlet容器,...
WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行全双工通信,即数据可以在两个方向上同时传输,极大地提高了实时性。Jetty是一个轻量级、高性能的Java Web服务器和Servlet容器,它也支持...
NULL 博文链接:https://vista-rui.iteye.com/blog/1386427
总结来说,Jetty内嵌实现是一种快速启动Web服务的方式,特别适合开发和测试环境。通过Maven管理依赖,编写简单的Java代码即可启动服务器。这种方式提高了开发效率,降低了部署复杂度,使得我们可以更加专注于应用的...
在本DEMO中,我们将利用Jetty作为服务器,提供HTTP和HTTPS两种服务。 **2. Maven配置** Maven是Java项目管理工具,通过其POM(Project Object Model)文件管理项目依赖。在本DEMO中,我们需要在POM.xml文件中添加...
`jetty.xml`的核心配置通过`<Configure>`标签实现,该标签用于配置Jetty服务器实例。 ##### 3.1 Server实例配置 配置一个ID为“Server”的Jetty服务器实例: ```xml <Configure id="Server" class="org.eclipse....
这个压缩包包含Jetty 8版本的实现及其依赖库,是学习和理解Jetty工作原理,尤其是NIO(非阻塞I/O)和Servlet容器实现的宝贵资源。 Jetty 8在设计时特别强调了性能和可扩展性,它使用了Java NIO(New I/O)API来处理...
例如,`org.eclipse.jetty.util.thread`包下的`QueuedThreadPool`是Jetty的默认线程池,它优化了线程的创建和销毁,提高了服务器性能。 4. **连接器(Connector)**:Jetty通过`Connector`组件与网络通信,如`...
Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它被广泛应用于各种规模的项目,从小型的个人项目到大型的企业级应用。...无论你是新手还是经验丰富的开发者,Jetty都能提供一个理想的平台来实现你的想法。
7. **配置灵活性**:Jetty提供了多种方式来配置服务器,包括XML配置文件、程序化API以及基于注解的配置。 8. **模块化**:Jetty的lib目录可能包含多个模块的JAR,如jetty-util.jar、jetty-http.jar等,这种模块化...
Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,与Tomcat相似,它为开发和部署Web应用程序提供了一种高效的选择。Jetty在设计上注重灵活性和可扩展性,使得它在处理HTTP协议、WebSocket协议以及部署各种...
jetty-security-9.4.8.v20171121.jar,jetty-io-9.4.8.v20171121.jar,jetty-continuation-9.4.8.v20171121.jar,jetty-client-9.4.8.v20171121.jar,jetty-jmx-9.4.8.v20171121.jar,jetty-plus-9.4.8.v20171121....
Comet是一种实现实时双向通信的技术,Jetty也支持通过Continuations实现Comet功能。 #### 十五、Embedding Jetty **15.1 嵌入式使用** Jetty的轻量级和灵活性使其非常适合嵌入到其他Java应用中。通过调用Jetty...
此外,Jetty的轻量化使得将其嵌入到Java应用程序中变得异常简单,只需少量代码即可实现。 在可扩展性方面,Jetty针对高并发和长时间连接的Web 2.0应用进行了优化。它利用Continuation机制有效地处理大量用户请求和...
eclipse jetty插件,从...下载run-jetty-run.zip文件,解压后再编写个links文件丢到eclipse的dropins目录下即可,省去了使用eclipse update方式安装的麻烦。 link文件样例如: path=d:\\eclipse_plugins\\run-jetty-run
4. **嵌入式Jetty**:阐述如何将Jetty直接嵌入到应用程序中,实现更灵活的部署方式。 5. **故障排查与日志**:介绍如何配置和使用Jetty的日志系统,以及常见问题的解决方法。 通过上述内容的学习,你将能够熟练地...
Jetty是Servlet规范的实现者,支持Servlet 3.1及以上版本。你可以通过创建`Server`对象,然后添加`ServletHandler`或`ServletContextHandler`来注册Servlet。例如,使用`addServlet()`方法指定Servlet类和映射路径...
对于高可用性和负载均衡的需求,Jetty支持会话复制,通过在多个Jetty实例之间复制会话数据,实现应用的水平扩展。 #### 十三、性能优化 **13.1 线程池** 合理配置线程池可以显著提升Jetty的性能。通过调整线程池...
Jetty 8.0是Java应用服务器的一种,主要用于托管Web应用程序。它是一个开源项目,以其轻量级、高效和易于集成的特点在开发社区中受到欢迎。Jetty支持Servlet 3.0规范,提供了对WebSocket协议的早期支持,这在当时是...