#spring #spring-boot #jhipster #spring-websocket
#весна #весна-загрузка #jhipster #spring-websocket
Вопрос:
Я внедрил websockets в свое приложение. Я скопировал конфигурацию и зависимости из приложения, созданного JHipster, но получаю следующие ошибки:
java.lang.IllegalArgumentException: No 'javax.websocket.server.ServerContainer' ServletContext attribute. Are you running in a Servlet container that supports JSR-356?
и
org.apache.catalina.connector.ClientAbortException: java.io.IOException: An established connection was aborted by the software in your host machine
Я считаю, что эти ошибки являются причиной того, что соединение с сокетами не является согласованным, и поэтому клиент не может отправлять и / или получать какие-либо сообщения.
Я искал решение, но другой пост не помог (т. е. Добавление зависимостей glassfish).
Это мои зависимости от ws:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-messaging</artifactId>
</dependency>
Нужно ли мне включать какие-то другие зависимости или проблема в другом месте?
Ответ №1:
Я нашел здесь решение. Я добавил эти 2 компонента:
@Bean
public TomcatServletWebServerFactory tomcatContainerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();;
factory.setTomcatContextCustomizers(Collections.singletonList(tomcatContextCustomizer()));
return factory;
}
@Bean
public TomcatContextCustomizer tomcatContextCustomizer() {
return new TomcatContextCustomizer() {
@Override
public void customize(Context context) {
context.addServletContainerInitializer(new WsSci(), null);
}
};
}