当前位置: 代码迷 >> J2EE >> 关于在STRUTS2中使用CometProcessor实现COMET,该怎么解决
  详细解决方案

关于在STRUTS2中使用CometProcessor实现COMET,该怎么解决

热度:79   发布时间:2016-04-22 01:23:26.0
关于在STRUTS2中使用CometProcessor实现COMET
小弟是新手,现在需要使用STRUTS2来实现一个COMET功能。
查了很多资料发现不外乎使用pushlet来实现,但是这个对我来说太大了,我只需要一个小功能。
于是自己写了一个,手工使用Thread.sleep来实现一个简陋的功能,但是实在太简陋了。
找到 http://tomcat.apache.org/tomcat-6.0-doc/aio.html#Example_code 这里,可以直接实现CometProcessor接口实现,现在我的问题是:
如果要使用CometProcessor,我该怎么做?
或者,如果有其它方法,有没有什么参考资料?

希望大家能给点建议,如果有参考代码就更好了。100分送上。

------解决方案--------------------
没用过,帮你顶下吧,开心每一天,加油!
------解决方案--------------------
没人回答吗?
1.改tomcat 的协议
2.建个CometProcessor
Java code
public class FightCometServlet  extends HttpServlet implements CometProcessor{    private static Log log = LogFactory.getLog(FightCometServlet.class);        private static final Integer TIMEOUT = 60 * 1000;    private FightLogic fightLogic;       @Override    public void init() throws ServletException {        ServletContext servletContext = this.getServletContext();        this.fightLogic = (FightLogic)WebApplicationContextUtils.getWebApplicationContext(servletContext).getBean("fightLogic");            }        public void event(final CometEvent event) throws IOException, ServletException {        HttpServletRequest request = event.getHttpServletRequest();        HttpServletResponse response = event.getHttpServletResponse();        response.setContentType("text/plain");            response.setCharacterEncoding("UTF-8");        HttpSession session = request.getSession(true);        PrintWriter writer = response.getWriter();                      Message message = null;        if (event.getEventType() == CometEvent.EventType.BEGIN) {                                    writer.println("什么什么");            log.info("Writing:" + messageStr);            writer.flush();         writer.close();        } else if (event.getEventType() == CometEvent.EventType.ERROR) {            log.info("Error for session: " + request.getSession(true).getId());            event.close();        } else if (event.getEventType() == CometEvent.EventType.END) {            log.info("End for session: " + request.getSession(true).getId());            event.close();        } else if (event.getEventType() == CometEvent.EventType.READ) {            throw new UnsupportedOperationException("This servlet does not acceptdata");        }    }}
  相关解决方案