【发布时间】:2012-10-20 17:43:10
【问题描述】:
我计划在运行于 JBoss AS 6 的应用程序中使用 Cometd 库。因此我下载了 cometd 2.4.0 并尝试将示例战争(来自 cometd-demo/target)部署到我的 AS。我知道如果不进行修改这是不可能的,所以我在 web.xml 中进行了更改:
在 web-app 标签中更改为 servlet 3.0(最初是 2.5)。使用来自CometD faq answer 的完整标签。基于 this description
的 web.xml 中已经存在的未注释延续过滤器
基于faq answer,添加了支持异步的标签。但是,这会导致问题:如果我只是取消注释,则无法解析 web.xml。我发现这是由于 XML 中的标签顺序造成的,因此将 async-supported 标签向下移动,就在 load-on-startup 标签之后。但是,Jboss 还是会抛出异常:
错误 [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/cometd-demo-2.4.0].[cometd]] servlet cometd 的 Servlet.service() 抛出异常: java.lang.IllegalStateException:正在被处理的 servlet 或过滤器 此请求使用的不支持异步操作
错误 [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/cometd-demo-2.4.0].[cometd]] servlet cometd 的 Servlet.service() 抛出异常: java.lang.ClassNotFoundException: org.eclipse.jetty.server.AbstractHttpConnection 来自 BaseClassLoader@12a54b
我使用的完整 web.xml 文件是 here。
尽管报告了所有错误,但示例没有运行我的 Jboss,但是通过观察萤火虫,我可以看到它执行快速池而不是长池。似乎服务器认为浏览器打开了多个连接,但事实并非如此(见下面的 JSON):
[{"id":"137","successful":true,"advice":{"interval":2000,"reconnect":"retry","multiple-clients":true,"timeout":20000},"channel":"/meta/connect"}]
是否有人设法使示例与 JBoss as6 一起工作?如何?我在这里做错了什么?
【问题讨论】:
标签: jboss6.x server-push cometd