Использование API WebSocket со Struts 2
У меня есть веб-приложение Struts2, работающее на Tomcat 7.0.43, которое использует плагины Rest и Convention для сопоставления всех запросов. Struts пытается отобразить все запросы самостоятельно.
JSR 356 определяет конечные точки сервера, используя аннотации, такие как
@ServerEndpoint(value = "/websocket/chat")
Теперь, когда брат пытается подключиться кws:/127.0.0.1:8080/websocket/chat
запрос не выполняется, потому что преобразователь Struts перехватывает запрос.
Могу ли я что-то указать в файлах XML, чтобы запрос достиг нужного места?
РЕДАКТИРОВАТЬ:
Как и предполагалось, я добавил
<constant name="struts.action.excludePattern" value="/websocket.*?" />
к моей конфигурации Struts, после чего URL / websocket / chat начал достигать ошибки 404.
Позже я узнал, что мне нужно настроитьServerApplicationConfig
реализация. После этого websocket начинает работать нормально, но остальная часть моего приложения не загружается, выдавая ошибку:
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
Вот мой класс:
public class Socket implements ServerApplicationConfig {
@Override
public Set<ServerEndpointConfig> getEndpointConfigs(Set<Class<? extends Endpoint>> scanned) {
Set<ServerEndpointConfig> result = new HashSet<ServerEndpointConfig>();
return result;
}
@Override
public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> scanned) {
Set<Class<?>> results = new HashSet<Class<?>>();
for (Class<?> clazz : scanned) {
results.add(clazz);
}
return results;
}
}
Как я могу заставить все работать вместе в Гармонии?
Примечание. Я использую плагин Struts Spring для внедрения зависимостей Spring Security.