关于在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"); } } }阅读