Spring Boot Websockets dans Wildfly
Salut, j'ai besoin de déployer mon Printemps de Démarrage de l'app dans Wildfly 8.1 et je suis de l'exception suivante:
Causés par: java.lang.RuntimeException: java.lang.ClassCastException: org.apache.tomcat.websocket.serveur.WsServerContainer ne peut pas être jeté aux io.ressac.les websockets.jsr.ServerWebSocketContainer
at io.ressac.servlet.de base.DeploymentManagerImpl.déployer(DeploymentManagerImpl.java:219)
au org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:87)
au org.wildfly.extension.undertow.deployment.UndertowDeploymentService.start(UndertowDeploymentService.java:72)
au org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
au org.jboss.msc.service.ServiceControllerImpl$StartTask.exécuter(ServiceControllerImpl.java:1881) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
... 3 plus
Causés par: java.lang.ClassCastException: org.apache.tomcat.websocket.serveur.WsServerContainer ne peut pas être jeté aux io.ressac.les websockets.jsr.ServerWebSocketContainer
at io.ressac.les websockets.jsr.Bootstrap$WebSocketListener.contextInitialized(Bootstrap.java:69)
at io.ressac.servlet.de base.ApplicationListeners.contextInitialized(ApplicationListeners.java:173)
at io.ressac.servlet.de base.DeploymentManagerImpl.déployer(DeploymentManagerImpl.java:190)
... 7 plus
Il semble que ma configuration pour les websockets et de messagerie pourrait être le coupable?
Je regardais ce https://github.com/joshlong/boot-examples/issues/2 Et aucune des solutions proposées ne semble fonctionner pour moi. Voici les dépendances de mon pom:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.6.RELEASE</version>
</parent>
<dependencies>
<!--Testing-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${apache.httpcomponents.version}</version>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!--Database-->
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
</dependency>
</dependencies>
J'ai essayé d'utiliser le ressort direct-amorçage-starter-websocket en tant que bien, mais faire la même chose.
Voici mon websocket config:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer{
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
super.configureMessageBroker(registry);
registry.enableSimpleBroker("/ssp");
registry.setApplicationDestinationPrefixes("/inc");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/update/applications");
}
}
Merci de prendre le temps de lire ce. Toute aide me serait plus apprécié.
Aussi, c'est mon premier démarrage de l'application. :/
source d'informationauteur Chris Stier | 2014-09-11
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin d'exclure tomcat-embed-websocket
printemps-amorçage-starter-web et printemps-amorçage-starter-websocket inclut par défaut le printemps-amorçage-starter-tomcat, ce qui exclut le tomcat, comme ci-dessous
et comprennent ressac, assurez-vous que le tomcat existe pas dans le classpath.
Je ne suis pas sûr, mais votre POM autour de websockets devrait ressembler à ceci:
spring-messaging
spring-websocket
jackson-databind
spring-boot-starter-web
sont redondants.Il est également
spring-boot-starter-thymeleaf
.Cependant, je pense que la racine de votre cause est
tomcat-embed-websocket
.Utilisez la commande suivante pour trouver toutes les dépendances qui comprend
spring-boot-starter-tomcat
:Exclure Tomcat démarreur à partir de tous vos liste des dépendances par cette commande.
Après cela, vous devrez peut-être ajouter
javax.servlet-api
comme une condition de dépendance:Gradle les utilisateurs avec cette question: découvrez les commentaires sur ce billet: https://github.com/spring-projects/spring-boot/issues/6166