websocket url에서 async 관련 에러

이동욱·2023년 12월 11일
0

TroubleShooting

목록 보기
5/9

websocket url에서 async 관련 에러

1. 개요


프로젝트 진행 중 embeded was로 어플리케이션을 포팅하려는데 자꾸 아래와 같은 에러가 발생했다. (어플리케이션 정상 작동 했으나 에러로그 아래쪽 보니 웹소켓 url /ws 쪽에서 계속 에러가 났다.)

async support must be enabled on a servlet and for all filters involved in async request processing. this is done in java code using the servlet api or by adding "<async-supported>true</async-supported>" to servlet and filter declarations in web.xml. also you must use a servlet 3.0+ container

2. 원인 & 해결


일단 에러 자체가 비동기 요청 관련 모든 servlet, filters에서 async가 enabled해야 된다는 것인데 ... 그 다음 문장을 보면 web.xml에 true를 추가하라고 나온다.

근데 spring boot에서 @SpringBootApplication에 web.xml를 포함해주고 있기 때문에 web.xml이 없었다. 그래서 dispatcherservlet bean을 만들어 url="/"에 async support true를 설정해봤는데 이번엔 다른 에러 ...

일단 먼저 아예 embeded was 자체를 바꿔보자 생각했다. 그래서 app 실행 시 was를 무엇을 사용하는지 봤는데 tomcat이 구동되었다. build.gradle에 undertow 사용하도록 설정이 되어있을텐데 !?!?

build.gradle 파일을 한 번 보니 configuration {} 쪽에 compile.exclude tomcat module로 되어 있던 것을 all.exclude로 변경하니 제대로 undertow가 적용되었다.

아무튼 정상적으로 undertow를 사용하도록 설정 후 다시 서버에 포팅하니 정상작동했다. 추가로 tomcat으로도 돌려봤는데 문제가 없었다.

profile
lduk 웹 개발자(back)

0개의 댓글