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);
        }
    }
}


Reply via email to