複数のエンドポイントが同じパスに展開されない可能性があるという有望な答えは見つかりませんでしたが、いくつかのスタックオーバーフローとGoogleグループのcometd関連トピックを精査しました。
Cometd バージョン: 3.0.5 Tomcat バージョン: 7.0.55
Spring 統合のために、BayeuxServer インスタンスは次のように作成されます。
@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: Multiple Endpoints may not be deployed to the same path [/cometd] at org.cometd.websocket.server.WebSocketTransport .init(WebSocketTransport.java:93)
2015 年 7 月 30 日 4:35:02 PM org.apache.catalina.core.StandardWrapperValve 呼び出し SEVERE: サーブレット cometd javax.websocket.DeploymentException の割り当て例外: 複数のエンドポイントが組織の同じパス [/cometd] にデプロイされていない可能性があります。 apache.tomcat.websocket.server.WsServerContainer.addEndpoint (WsServerContainer.java:207)
cometd が tomcat でうまく動作しないことは理解しています。Tomcat が cometd によって作成されたのと同じエンドポイントを追加できないようにすることはできますか? アプリケーションを Tomcat にデプロイする必要があります。