Tomcat6 修改server.xml protocol="org.apache.coyote.http11.Http11NioProtocol"
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.catalina.comet.CometEvent;
import org.apache.catalina.comet.CometProcessor;
public class TestComet extends HttpServlet implements CometProcessor{
/**
*
*/
private static final long serialVersionUID = 1908618975033615167L;
private TestClient client = null;
@Override
public void event( CometEvent event ) throws IOException, ServletException {
HttpServletRequest req = event.getHttpServletRequest();
HttpServletResponse resp = event.getHttpServletResponse();
switch ( event.getEventType() ){
case BEGIN:
{
event.setTimeout(30000);
client = new TestClient(resp);
client.start();
break;
}
case END:
{
System.out.println("end");
event.close();
break;
}
case ERROR:
{
System.out.println("error");
event.close();
break;
}
case READ:
{
System.out.println("read");
event.close();
break;
}
}
}
}
import javax.servlet.ServletResponse;
public class TestClient {
private ServletResponse resp = null;
private Customer customer;
private Producer producer;
private Thread pro;
private Thread cus;
private SyncStack stack;
public TestClient(ServletResponse resp){
this.resp = resp;
stack = new SyncStack();
customer = new Customer(resp,stack);
producer = new Producer(stack);
cus = new Thread(customer);
pro = new Thread(producer);
}
public void start(){
cus.start();
pro.start();
}
public void setStatus(boolean _status){
customer.setStatus(_status);
}
}
//产品
public class SyncStack {
private String[] str = new String[10];
private int index;
public synchronized void push(String sst) {
if (index == sst.length()) {
try {
System.out.println("enough product,please wait!");
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.notify();
str[index] = sst;
index++;
}
public synchronized String pop() {
if (index == 0) {
try {
System.out.println("no product,please wait!");
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
notify();
index--;
String product = str[index];
return product;
}
public String[] pro() {
return str;
}
}
//生产者
public class Producer implements Runnable {
private SyncStack stack;
private boolean isRunning = true;
public Producer(SyncStack stack) {
this.stack = stack;
}
public void run() {
while(isRunning){
for (int i = 0; i < stack.pro().length; i++) {
String product = "Product" + i;
stack.push(product);
System.out.println("producted: " + product);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}// while
}
}
//消费者
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletResponse;
public class Customer implements Runnable{
private ServletResponse resp = null;
private SyncStack stack;
private boolean isRunning = true;
public Customer(ServletResponse resp,SyncStack stack){
this.resp = resp;
this.stack = stack;
}
@Override
public void run() {
// TODO Auto-generated method stub
while(isRunning){
for (int i = 0; i < stack.pro().length; i++) {
String product = stack.pop();
PrintWriter pt;
try {
pt = resp.getWriter();
pt.println(product);
pt.flush();
resp.flushBuffer();
System.out.println("consumed: " + product);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}//while
}
public void setStatus(boolean _status){
this.isRunning = _status;
}
}
jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<script language = "javascript">
function go(){
var url = "http://109.123.112.190:8080/abc/comet";
var request ;
request = new XMLHttpRequest();
request.setRequestHeader("Content-Type","application/x-javascript;");
request.open("GET",url,true);
request.send(null);
request.onreadystatechange = function(){
if(this.readyState == 3 && this.status == 200){
if(request.responseText){
document.getElementById("number").innerHTML = request.responseText;
}
}
};
}
</script>
</head>
<body>
<input type = "button" name = "go" onclick = "go();" value="go"/>
<div id = "number"></div>
</body>
</html>
分享到:
相关推荐
Comet实现聊天室 运行时请将Tomcat的server.xml文件内的 connectionTimeout="20000" redirectPort="8443" /> 改为 connectionTimeout="20000" redirectPort="8443" /> 登陆的时候请记得先修改index.jsp...
comet4j+tomcat6+tomcat7并附完整版Demo,解决java后端向去前台推送信息的问题
comet4j+tomcat7 简单demo,内含源代码与操作手册,可直接部署后使用
comet两种实现之一的ajax实现,内部有源代码,这是一个聊天室的例子
tomcat实现comet例子,实现后台产生每隔几秒产生随机数,前台不刷新显示。tomcat实现comet例子,实现后台产生每隔几秒产生随机数,前台不刷新显示。tomcat实现comet例子,实现后台产生每隔几秒产生随机数,前台不...
javaweb消息推送 基于comet实现局域网内部通讯(聊天室)demo 功能特性 推送消息广播。 推送定向消息。 提供连接上线前、上线、下线前、下线、发送消息等多种可处理事件。 消息缓存机制,确保长轮询工作模式下不丢失...
comet4j Dome jar (tomcat6,tomcat7) comet4j Dome jar (tomcat6,tomcat7) comet4j Dome jar (tomcat6,tomcat7) comet4j Dome jar (tomcat6,tomcat7) comet4j Dome jar (tomcat6,tomcat7) comet4j Dome jar (tomcat6...
网络上Spring整合DWR comet 实现无刷新、多人聊天室 的代码整理,包含jar包,eclipse工程,直接导入即可运行。
NULL 博文链接:https://frank59.iteye.com/blog/1455050
comet4j 简单例子 + 文档 + jar + tomcat7 + 解压导入eclipse即可用。
里面东西很多,都是关于GWT-COMET的内容,实现gwt的服务器推技术,包括gwt-comet-examples-1.2.3:google官网上的Test实例;gwt-comet-1.2.3.jar:jar包,gwt-example:聊天实例源代码(.java的),gwt-event-source...
NULL 博文链接:https://ttling.iteye.com/blog/1910095
通过comet实现了一个聊天功能。 1.需要在tomcat的server.xml里面配置 connectionTimeout="20000" redirectPort="8443" /> 2.需要在tomcat的context.xml里面配置 在Context标签里面配置: ...
通过tomcat服务器,向网页发送即时消息。comet的小例子,可以直接运行,用tomcat6.0。
属于javaEE技术,对着源码讲解。视频可到优酷http://v.youku.com/v_show/id_XNTQ0NzQxMzYw.html?f=19180666或者直接搜名字。密码见文档
一个简单的comet实现的例子程序,就是comet实现长链接,反向ajax实现
使用springMvc为框架基础结合ibatis作为持久层,easyui作为前台框架并运用了jstl的标签库,加入了comet4j来实现实时推送
ssh框架整合comet实现即时通信的简单实例,ssh框架整合comet实现即时通信的简单实例
长连接方式的简易聊天室,因为使用了异步httphandler,I/O性能上会有所改进,采用5秒长连的方式,避免长时间的连接。
基于Bayeux协议的Comet框架的研究与实现.pdf