- 浏览: 959050 次
- 性别:
- 来自: 江西上饶
文章分类
- 全部博客 (460)
- p.spring (56)
- p.maven (20)
- p.ant (17)
- p.jee (18)
- p.jse (33)
- p.ofbiz (31)
- p.软件工程 (8)
- p.struts2 (5)
- p.hibernate (5)
- linux (25)
- 设计模式 (2)
- p.javascript (11)
- 硬件 (1)
- p.jsp (2)
- p.windows批处理 (1)
- 操作系统问题 (5)
- 算法 (1)
- p.mysql (7)
- p.sql (5)
- p.c (1)
- google产品 (0)
- 内存 (1)
- p.struts (1)
- p.freemarker (7)
- p.css (4)
- p.log4j (10)
- p.html (3)
- 淘宝产品 (0)
- 其他 (3)
- 编译器 (0)
- svn (4)
- p.spring.security (11)
- 图形 (0)
- p.xml (1)
- p.ssh (0)
- p.jquery (4)
- p.jdbc (3)
- p.flex (0)
- p.c++ (0)
- p.c#Net (0)
- p.assembly (0)
- p.sqlserver (0)
- p.其他 (3)
- p.webwork (21)
- p.wap (12)
- p.cglib (1)
- p.jee服务器 (11)
- windows (2)
- p.iphone (1)
- p.java.分布式与集群 (2)
- p.ibatis (16)
- p.eclipse (5)
- 架构 (2)
- http协议 (5)
- 我的个人标准 (2)
- 多线程 (1)
- 奇怪问题 (5)
- p.jira (13)
- p.httpclient (1)
- 服务器.apache (11)
- 安全防范 (1)
- p.PODAM (1)
- p.junit (16)
- fop (2)
- 硬盘安装 (1)
- powerdesigner (0)
- 单元测试 (1)
- apache commons (4)
- tomcat+apache集群 (10)
- 各类诡辩 (1)
- 安卓 (8)
- qvod (1)
- java编程基础知识考试考点及答案 (0)
- 工作总结 (4)
- oracle (0)
- spring的util工具 (3)
- json (2)
- maven (3)
- jms (19)
- p.bat (3)
- hadoop (2)
- git (3)
- nginx (1)
- p.移动开发 (1)
- shiro (3)
- 游戏破解 (1)
- react-native (7)
- ios开发 (1)
- webmagic (6)
- socks5 (1)
最新评论
-
weituotian:
说的不好,没人看的
公司系统中的菜单功能和权限功能 -
石不易:
非常详细的注解~
绑定端口和IP,Listen 与VirtualHost指令 -
spring_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
spring mvc -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装 -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装
假设一种情况,你的一个servlet会处理比较长的时间,而且这个servlet请求数量也挺多的,那么久会造成tomcat线程池被占用满了,造成其他用户的请求等待队列过多,时间过长。
用例子实现
首先需要开启
或者
用例子实现
首先需要开启
<servlet> <servlet-name>webProxyMain</servlet-name> <servlet-class>com.lsiding.nat.server.web.WebProxyMain</servlet-class> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet>
或者
@WebServlet(value = "/asyncTest", asyncSupported=true)
package com.lsiding.admin4j.act; import java.io.IOException; import javax.servlet.AsyncContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class AsyncTest */ @WebServlet(value = "/asyncTest.html", asyncSupported = true) public class AsyncTest extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public AsyncTest() { super(); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); // 必须 // 否则可能会 A filter or servlet of the current chain does not support // asynchronous operations. request.setAttribute("org.apache.catalina.ASYNC_SUPPORTED", true); AsyncContext asyncCtx = request.startAsync(); asyncCtx.addListener(new AppAsyncListener()); asyncCtx.setTimeout(9000); asyncCtx.start( new Thread() { public void run() { try { try { asyncCtx.getResponse().getOutputStream() .println("thread"); asyncCtx.getResponse().getOutputStream().flush(); } catch (IOException e) { } Thread.sleep(8000); asyncCtx.complete(); } catch (InterruptedException e) { } ; } }); response.getOutputStream() .write("请求方法返回了,但是response是否结束了呢?".getBytes()); response.getOutputStream().flush(); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
package com.lsiding.admin4j.act; import java.io.IOException; import javax.servlet.AsyncEvent; import javax.servlet.AsyncListener; public class AppAsyncListener implements AsyncListener { @Override public void onComplete(AsyncEvent asyncEvent) throws IOException { asyncEvent.getAsyncContext().getResponse().getOutputStream().println("onComplete"); asyncEvent.getAsyncContext().getResponse().getOutputStream().flush(); } @Override public void onError(AsyncEvent asyncEvent) throws IOException { asyncEvent.getAsyncContext().getResponse().getOutputStream().println("onError"); asyncEvent.getAsyncContext().getResponse().getOutputStream().flush(); } @Override public void onStartAsync(AsyncEvent asyncEvent) throws IOException { asyncEvent.getAsyncContext().getResponse().getOutputStream().println("onStartAsync"); asyncEvent.getAsyncContext().getResponse().getOutputStream().flush(); } @Override public void onTimeout(AsyncEvent asyncEvent) throws IOException { asyncEvent.getAsyncContext().getResponse().getOutputStream().println("asyncEvent"); asyncEvent.getAsyncContext().getResponse().getOutputStream().flush(); } }
发表评论
-
tomcat配置
2019-07-26 15:54 409http://tomcat.apache.org/tomcat ... -
Spring 定时任务,cron表达式,@Scheduled cron表达式
2016-04-25 15:48 5296一个cron表达式有至少6 ... -
tomcat https
2015-09-02 13:50 695一、 什么是HTTPS 在说HTTPS之前先说说什么是HTT ... -
关于使用s.url jstl的上下文
2015-08-16 13:28 918比如 [@s.url '/'/]index.html?cote ... -
视频编码转化
2015-08-14 10:51 1394JAVA目前的转化库没发现过,网上提供的方案是通过java作为 ... -
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
2015-08-14 09:52 2008Neither the JAVA_HOME nor the J ... -
web.xml url-pattern
2015-08-03 01:54 577全站匹配 /* 而不是*,因为jee标准要求url-pat ... -
servlet3.0
2014-11-13 23:04 446异步处理支持 首先,Servlet 接收到请求之后,可能首先需 ... -
java获取当前类的绝对路径
2013-12-14 00:37 8961.如何获得当前文件路径 常用: (1).Test.class ... -
Tomcat Content is not allowed in prolog
2013-07-10 10:19 1347Apache-Tomcat 运行问题 Content is n ... -
整站国际化方案
2012-11-28 17:46 1111当前常见的实现方式,主要由两种方案实现 1.通过locale ... -
java
2012-09-06 14:04 0循环的性能 考点说明 1 ... -
java
2012-09-06 14:01 0有继承关系的类之间的 ... -
在eclipse中启动tomcat很慢
2012-06-07 10:36 1684这个原因可能是断点过多,删除所有断点后,就不会了。 -
workers.properties
2012-03-19 23:23 1582使用键值对方式 xxx=dddd方式 worker.list ... -
中文帮助文档
2012-03-16 17:26 1005http://lamp.linux.gov.cn/Apache ... -
mod_jk
2012-03-11 13:50 1168mod_jk至少需要两部分 mod_jk.xx,这是apach ... -
Unicode 各种特殊字符编码值
2012-02-25 15:13 6749https://developer.mozilla.org/c ... -
iframe下面的session问题
2011-12-04 19:52 5320在写iframe完成长连接获取上传状态的时候,有两次请求,一次 ... -
tomcat内存设置设置
2011-10-19 13:08 1361For Windows If you haven´t ins ...
相关推荐
综上所述,这个"Servlet 3.0异步推送聊天室"项目展示了如何利用Servlet 3.0的异步处理和推送技术构建一个实时交互的应用。通过理解和实践这些技术,开发者可以构建出更加高效、响应迅速的Web应用程序。
总的来说,Servlet3.0通过增强的注解配置、异步处理、过滤器改进、上下文参数和监听器的注解支持,以及微容器概念,极大地提升了Java Web开发的效率和便利性。这份参考手册无疑是深入理解和掌握Servlet3.0技术的关键...
在压缩包文件`CometTest`中,可能包含了一个简单的Comet实现示例,你可以通过学习和运行这个例子来深入理解Servlet3.0异步处理和Comet页面推送的工作原理。通过实践,你可以更好地掌握如何在实际项目中利用这些技术...
2. **异步处理**:Servlet 3.0引入了异步Servlet的概念,允许Servlet在处理请求时返回控制权给容器,然后在准备好响应时再重新获取控制权。这提高了性能,因为线程可以在等待I/O操作完成时被重用,而不是阻塞等待。 ...
Servlet 3.0作为Servlet规范的一个重要版本,引入了许多新特性,其中最引人注目的就是异步处理和支持Web插座(WebSocket),这使得实时通信如聊天室的实现变得更加便捷。本文将深入探讨如何利用Servlet 3.0的异步...
下载的`servlet3.0jar综合`压缩包包含了实现这些特性的关键库,对于进行Java EE 3.0开发的程序员来说是必不可少的工具。在实际开发中,结合相关的框架(如Spring MVC)和其他Java EE组件,可以构建出功能强大、易...
这个压缩包“servlet3.0.zip”包含两个核心的JAR文件:“javax.servlet-javadoc.jar”和“javax.servlet.jar”,它们分别提供了Servlet API的文档和实现。 1. **Servlet API**: - `javax.servlet`包是Servlet API...
2. **异步处理**:Servlet 3.0引入了异步处理能力,允许Servlet在处理请求时启动一个后台线程,从而提高服务器性能。通过实现`AsyncContext`接口,开发者可以控制请求的生命周期,直到准备好返回响应。 3. **...
2. **异步处理**:Servlet3.0支持异步处理,允许Servlet在接收到请求后启动一个后台线程进行处理,而主线程可以立即返回,提高了服务器对高并发请求的响应能力。通过`HttpServletRequest.startAsync()`方法,开发者...
Java Servlet 3.0 异步处理问题 Java Servlet 3.0 异步处理问题主要介绍了 Java 中 Servlet 3.0 异步处理的原理以及遇到的问题分析。Servlet 3.0 开始提供了 AsyncContext 用来支持异步处理请求,那么异步处理请求...
【标题】"Jsp/Servlet3.0 ppt和代码"涉及的是Java服务器页面(JSP)和Servlet 3.0版本的关键技术。JSP是一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,从而实现服务器端的动态内容生成。而Servlet是...
2. **异步处理**: Servlet 3.0允许开发者编写异步Servlet,通过`AsyncContext`对象实现非阻塞I/O,提高应用性能。 3. **监听器和过滤器**: 可以使用注解`@WebListener`和`@WebFilter`声明监听器和过滤器,简化了配置...
Servlet3.0引入了异步处理能力,允许Servlet在处理请求时返回控制权给容器,然后在后台继续执行任务。通过实现`AsyncContext`,开发者可以创建非阻塞的应用,提高应用性能和响应速度。 3. **Pluggable Contexts**...
总结起来,"servlet3.0-demo"项目展示了Servlet 3.0的关键特性,包括使用注解声明Servlet、处理文件上传以及异步处理。这些改进极大地提升了开发效率,使得Servlet API更加现代化和易于使用。通过学习这个示例,...
最后,关于"链接.txt"、"创建MavenWeb项目Servlet3.0的模板"和"Idea安装插件"这三个文件,它们可能是教程的补充资料。"链接.txt"可能包含其他相关资源的URL;"创建MavenWeb项目Servlet3.0的模板"可能是一个详细的...
在实际开发中,将这些库导入到项目中,开发者可以利用Servlet3.0的异步处理能力,处理高并发场景下的请求;使用JSTL简化页面逻辑,提升开发效率。同时,由于不再依赖web.xml进行所有配置,项目的部署和扩展也变得...
1. **异步处理**:Servlet 3.0引入了异步处理能力,允许Servlet在请求处理过程中挂起并稍后恢复,而不是阻塞线程,这极大地提高了应用的并发性能。通过`AsyncContext`接口,开发者可以实现非阻塞I/O,以更高效地处理...
本文将详细介绍 Servlet 3.0 的关键新特性,包括异步处理、新增的注解支持以及可插性支持等方面。 #### 异步处理支持 异步处理是 Servlet 3.0 中最为显著的新特性之一。这一特性解决了传统 Servlet 在处理长时间...
Servlet3.0提供了异步处理能力,允许Servlet在处理请求时启动一个独立的线程,从而避免阻塞容器线程。通过`AsyncContext`接口,可以实现非阻塞I/O和长时间运行的任务。 3. **监听器的注解注册**: 类似于Servlet...