Hello,
a basic CometProcessor servlet, I found that the CometEvent END is not
fired.only BEGIN event is fired.
(tested on 7.0.34 and the latest 7.0.42)
please use a browser to access the servlet
BWT, it seems that the org.apache.tomcat.dbcp.dbcp.BasicDataSource code
missing in the svn:tc7.0.x/trunk,
can you please have a check ?
Thanks!
package comet1;
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 Test1 extends HttpServlet implements CometProcessor {
//private static final Integer TIMEOUT = 60 * 1000;
@Override
public void init() throws ServletException {
}
@Override
public void destroy() {
}
static int i=1;
public void event(final CometEvent event) throws IOException,
ServletException {
i++;
HttpServletRequest request = event.getHttpServletRequest();
HttpServletResponse response = event.getHttpServletResponse();
System.out.println("Event: " + event + " req:" + request + "
resp:"+response);
if (event.getEventType() == CometEvent.EventType.BEGIN) {
//String p= event.getHttpServletRequest().getParameter("p");
//request.setAttribute("org.apache.tomcat.comet.timeout", 10 * 1000);
String t= "just test response:" + i;
response.getOutputStream().write(t.getBytes());
event.close();
}
else if (event.getEventType() == CometEvent.EventType.ERROR) {
event.close();
}
else if (event.getEventType() == CometEvent.EventType.END) {
event.close();
}
else if (event.getEventType() == CometEvent.EventType.READ) {
InputStream is = request.getInputStream();
byte[] buf = new byte[512];
do {
int n = is.read(buf); //can throw an IOException
if (n > 0) {
System.out.println("Read " + n + " bytes: " + new
String(buf, 0, n) );
}
else if (n < 0) {
System.out.println("Read <0, EOS ?");
return;
}
} while (is.available() > 0);
}
}
}