[SPRING] Wildfly의 스프링 부트 웹 소켓
SPRINGWildfly의 스프링 부트 웹 소켓
안녕 Wildfly 8.1에 Spring Boot App을 배포해야하는데 다음과 같은 예외가 발생합니다.
웹 소켓 및 메시징에 대한 내 설정이 그 원인 일 수 있습니까? 나는이 https://github.com/joshlong/boot-examples/issues/2를보고 있었다. 그리고 제시된 해결책들 중 어느 것도 나에게 효과가없는 것 같다. 다음은 내 친구의 의존성입니다.
<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>
나는 직접 spring-boot-starter-websocket을 사용해 보았지만 똑같은 것을 얻는다. 여기에 내 websocket 설정도 있습니다 :
@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");
}
}
이것을 읽어 주셔서 감사합니다. 어떤 도움이라 더 많이 감사 할 것입니다. 또한, 이것은 나의 첫 번째 부팅 응용 프로그램입니다. : /
해결법
-
==============================
1.tomcat-embed-websocket을 제외해야합니다.
tomcat-embed-websocket을 제외해야합니다.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-websocket</artifactId> </exclusion> </exclusions> </dependency>
-
==============================
2.spring-boot-starter-web과 spring-boot-starter-websocket은 기본적으로 spring-boot-starter-tomcat을 포함하고 있으므로 아래와 같이 바람둥이를 제외하십시오
spring-boot-starter-web과 spring-boot-starter-websocket은 기본적으로 spring-boot-starter-tomcat을 포함하고 있으므로 아래와 같이 바람둥이를 제외하십시오
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring-boot.version}</version> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> <version>${spring-boot.version}</version> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
undertow를 포함 시키면, 클래스 패스에 어디에서도 바람둥이가 존재하지 않는지 확인하십시오.
-
==============================
3.확실하지는 않지만 웹 소켓 주변의 POM은 다음과 같아야합니다.
확실하지는 않지만 웹 소켓 주변의 POM은 다음과 같아야합니다.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-websocket</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
스프링 메시징, spring-websocket, jackson-databind, spring-boot-starter-web은 중복 적입니다.
스프링 부트 시동기 (spring-boot-starter-thymeleaf)도 있습니다.
그러나 나는 당신의 원인의 뿌리가 바람둥이 embed-websocket라고 생각합니다.
-
==============================
4.spring-boot-starter-tomcat이 포함 된 모든 종속성을 찾으려면 다음 명령을 사용하십시오.
spring-boot-starter-tomcat이 포함 된 모든 종속성을 찾으려면 다음 명령을 사용하십시오.
mvn dependency:tree -Dincludes=org.springframework.boot:spring-boot-starter-tomcat
이 명령으로 나열된 모든 종속성에서 Tomcat 시작 프로그램을 제외하십시오.
그런 다음 javax.servlet-api를 제공된 종속성으로 추가해야 할 수도 있습니다.
<dependency> <artifactId>javax.servlet</artifactId> <groupId>javax.servlet-api</groupId> <scope>provided</scope> </dependency>
이 문제를 가진 사용자를 포기하십시오 :이 티켓에 대한 의견을 확인하십시오 : https://github.com/spring-projects/spring-boot/issues/6166
from https://stackoverflow.com/questions/25792121/spring-boot-websockets-in-wildfly by cc-by-sa and MIT license