2015-07-30 11 views
0

Я не нашел многообещающего ответа на вопрос Несколько конечных точек не могут быть развернуты по тому же пути, хотя просматривают несколько разделов stackoverflow и google groups, связанных с cometd.Несколько конечных точек не могут быть развернуты на одном пути - cometd и tomcat7

Cometd Версия: 3.0.5 Tomcat Версия: 7.0.55

экземпляр 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; 
    } 

Пример: https://github.com/cometd/cometd/blob/master/cometd-java/cometd-java-oort/src/test/java/org/cometd/oort/spring/OortConfigurator.java

Во время этой установки cometd и котом как пытался добавить конечную точку на том же пути, как показано в журнале ошибок.

Вызванный: java.lang.RuntimeException: javax.websocket.DeploymentException: несколько конечных точек не может быть развернут на том же пути [/ cometd] на org.cometd.websocket.server.WebSocketTransport .init (WebSocketTransport .java: 93)

30 июля 2015 4:35:02 PM org.apache.catalina.core.StandardWrapperValve Invoke СИЛЬНЫЙ: Выделяют исключение для сервлета cometd javax.websocket.DeploymentException: Несколько Endpoints не могут быть развернуты по тому же пути [/ cometd] по адресу org.apache.tomcat.websocket.server.WsServerContainer .addEndpoint (WsServerContainer.java:207)

Я понимаю, что комета не очень хорошо работает с tomcat. Можно ли запретить tomcat добавлять конечную точку так же, как созданную комету? У меня есть требование развернуть приложение в tomcat.

+0

Обновите до * как минимум * Tomcat 7.0.63, чтобы получить более подробную информацию об ошибках из Tomcat для этого.(он сообщит, что два источника конечных точек находятся в сообщении об исключении) –

+0

Устранение проблемы с tomcat 7.0.63 не разрешено. Две точки будут совпадать по пути [/ cometd]. Конечная точка должна регистрироваться только один раз. – user2263197

ответ

1

Я считаю, что проблема в вашем приложении/настройке, а не в 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, который будет производить конфигурации боб очень похож на фрагмент кода вы публикуемую в вашем вопросе, вы запрошено другие вопросы конфигурации:

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. Скопируйте этот файл в директорию webapps Tomcat, запустите Tomcat и просмотрите http://localhost:8080/cometd-tomcat-1.0.0.

Эти шаги представляют собой краткое описание того, что описано в CometD documentation primer.

Работали как очарование для меня.

Предлагаю вам начать с этой настройки и изменить эту настройку, добавив функции, необходимые для вашего приложения.