多个端点可能不会部署到同一路径 - cometd 和 tomcat7
Multiple Endpoints may not be deployed to the same path - cometd and tomcat7
尽管搜索了几个 Whosebugs 和 google 组 cometd 相关主题,但我没有找到 多个端点可能不会部署到同一路径 的任何有希望的答案。
彗星版本:3.0.5
Tomcat版本:7.0.55
BayeuxServer 实例创建如下,用于 Spring 集成。
@Bean(initMethod = "start", destroyMethod = "stop")
@Singleton
public BayeuxServer bayeuxServer() {
BayeuxServerImpl bayeuxServer = new BayeuxServerImpl();
***bayeuxServer.setTransports(new WebSocketTransport(bayeuxServer), new JSONTransport(bayeuxServer));***
bayeuxServer.setOption(ServletContext.class.getName(), servletContext);
bayeuxServer.setOption("ws.cometdURLMapping", "/cometd/*");
bayeuxServer.addExtension(new org.cometd.server.ext.TimesyncExtension());
servletContext.setAttribute(BayeuxServer.ATTRIBUTE, bayeuxServer);
return bayeuxServer;
}
在此设置过程中,cometd 和 tomcat 都尝试在错误日志中看到的同一路径上添加终点。
原因:java.lang.RuntimeException:javax.websocket.DeploymentException:多个端点可能未部署到同一路径[/cometd]
在 org.cometd.websocket.server.WebSocketTransport.init(WebSocketTransport.java:93)
2015 年 7 月 30 日4:35:02下午org.apache.catalina.core.StandardWrapperValve调用
严重:为 servlet cometd 分配异常
javax.websocket.DeploymentException: 多个端点不能部署到同一路径[/cometd]
在 org.apache.tomcat.websocket.server.WsServerContainer.addEndpoint(WsServerContainer.java:207)
我知道 cometd 不能很好地与 tomcat 配合使用。是否可以阻止 tomcat 添加与 cometd 创建的相同的终点?我需要在 tomcat.
中部署应用程序
我认为问题出在您的应用程序/设置中,而不是在 CometD 或 Tomcat。
这对我适用于 CometD 3.0.5 和 Tomcat 7.0.63:
$ mvn archetype:generate -DarchetypeCatalog=http://cometd.org
...
Choose archetype:
1: http://cometd.org -> org.cometd.archetypes:cometd-archetype-dojo-jetty9 (3.0.5 - CometD archetype for creating a server-side event-driven web application)
2: http://cometd.org -> org.cometd.archetypes:cometd-archetype-spring-dojo-jetty9 (3.0.5 - CometD archetype for creating a server-side event-driven web application)
3: http://cometd.org -> org.cometd.archetypes:cometd-archetype-jquery-jetty9 (3.0.5 - CometD archetype for creating a server-side event-driven web application)
4: http://cometd.org -> org.cometd.archetypes:cometd-archetype-spring-jquery-jetty9 (3.0.5 - CometD archetype for creating a server-side event-driven web application)
...
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 4
选择选项 4
后,将生成与您在问题中发布的片段非常相似的配置 bean,系统会提示您其他配置问题:
Define value for property 'groupId': : org.cometd.test
Define value for property 'artifactId': : cometd-tomcat
Define value for property 'version': 1.0-SNAPSHOT: : 1.0.0
...
此时你可以构建 war
:
$ cd cometd-tomcat
$ mvn clean install
war
文件将位于 cometd-tomcat/target/cometd-tomcat-1.0.0.war
。
将此文件复制到 Tomcat 的 webapps
目录,启动 Tomcat,然后浏览 http://localhost:8080/cometd-tomcat-1.0.0.
这些步骤是对 CometD documentation primer.
中描述内容的快速总结
对我来说就像一个魅力。
我建议您从这里开始,修改此设置,添加您的应用程序所需的功能。
尽管搜索了几个 Whosebugs 和 google 组 cometd 相关主题,但我没有找到 多个端点可能不会部署到同一路径 的任何有希望的答案。
彗星版本:3.0.5 Tomcat版本:7.0.55
BayeuxServer 实例创建如下,用于 Spring 集成。
@Bean(initMethod = "start", destroyMethod = "stop")
@Singleton
public BayeuxServer bayeuxServer() {
BayeuxServerImpl bayeuxServer = new BayeuxServerImpl();
***bayeuxServer.setTransports(new WebSocketTransport(bayeuxServer), new JSONTransport(bayeuxServer));***
bayeuxServer.setOption(ServletContext.class.getName(), servletContext);
bayeuxServer.setOption("ws.cometdURLMapping", "/cometd/*");
bayeuxServer.addExtension(new org.cometd.server.ext.TimesyncExtension());
servletContext.setAttribute(BayeuxServer.ATTRIBUTE, bayeuxServer);
return bayeuxServer;
}
在此设置过程中,cometd 和 tomcat 都尝试在错误日志中看到的同一路径上添加终点。
原因:java.lang.RuntimeException:javax.websocket.DeploymentException:多个端点可能未部署到同一路径[/cometd] 在 org.cometd.websocket.server.WebSocketTransport.init(WebSocketTransport.java:93)
2015 年 7 月 30 日4:35:02下午org.apache.catalina.core.StandardWrapperValve调用 严重:为 servlet cometd 分配异常 javax.websocket.DeploymentException: 多个端点不能部署到同一路径[/cometd] 在 org.apache.tomcat.websocket.server.WsServerContainer.addEndpoint(WsServerContainer.java:207)
我知道 cometd 不能很好地与 tomcat 配合使用。是否可以阻止 tomcat 添加与 cometd 创建的相同的终点?我需要在 tomcat.
中部署应用程序我认为问题出在您的应用程序/设置中,而不是在 CometD 或 Tomcat。
这对我适用于 CometD 3.0.5 和 Tomcat 7.0.63:
$ mvn archetype:generate -DarchetypeCatalog=http://cometd.org
...
Choose archetype:
1: http://cometd.org -> org.cometd.archetypes:cometd-archetype-dojo-jetty9 (3.0.5 - CometD archetype for creating a server-side event-driven web application)
2: http://cometd.org -> org.cometd.archetypes:cometd-archetype-spring-dojo-jetty9 (3.0.5 - CometD archetype for creating a server-side event-driven web application)
3: http://cometd.org -> org.cometd.archetypes:cometd-archetype-jquery-jetty9 (3.0.5 - CometD archetype for creating a server-side event-driven web application)
4: http://cometd.org -> org.cometd.archetypes:cometd-archetype-spring-jquery-jetty9 (3.0.5 - CometD archetype for creating a server-side event-driven web application)
...
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): : 4
选择选项 4
后,将生成与您在问题中发布的片段非常相似的配置 bean,系统会提示您其他配置问题:
Define value for property 'groupId': : org.cometd.test
Define value for property 'artifactId': : cometd-tomcat
Define value for property 'version': 1.0-SNAPSHOT: : 1.0.0
...
此时你可以构建 war
:
$ cd cometd-tomcat
$ mvn clean install
war
文件将位于 cometd-tomcat/target/cometd-tomcat-1.0.0.war
。
将此文件复制到 Tomcat 的 webapps
目录,启动 Tomcat,然后浏览 http://localhost:8080/cometd-tomcat-1.0.0.
这些步骤是对 CometD documentation primer.
中描述内容的快速总结对我来说就像一个魅力。
我建议您从这里开始,修改此设置,添加您的应用程序所需的功能。