Мой аспект ведения журнала не позволяет запускать функции netty-websocket (OnOpen, OnMessage и т. Д.).
У меня есть сервер на основе netty-websocket, который выполняет определенные функции при подключении к новому клиенту или получении сообщений. Эти функции работают правильно.
Недавно я добавил аспект регистрации для записи подробной информации об этих функциях. Неожиданно это останавливает запуск этих функций (и сам аспект ведения журнала тоже не работает).
Аспект ведения журнала корректно работает с другими функциями.
Код аспекта регистрации:
@Aspect
@Component
public class ServiceLogAspect {
@Around("execution(* com.test.server.WebSocketServer.onOpen(..))")
public Object around(ProceedingJoinPoint jp) throws Throwable {
Object result;
System.out.println("around");
try {
result = jp.proceed();
return result;
} catch (Throwable e) {
e.printStackTrace();
}
return null;
}
Код функции веб-сокета:
@ServerEndpoint(prefix = "netty-websocket")
@Component
public class WebSocketServer {
@OnOpen
public void onOpen(Session session, HttpHeaders headers, ParameterMap parameterMap) throws IOException {
System.out.println("session:" + session + ", new connection"); // not executed
}
Я также пытался @Before, что приводит к той же ошибке.
@Around("execution(* com.test.server.WebSocketServer.onOpen(..))")
public void beforeMethod(JoinPoint point) {
System.out.println("before method");
}
Я считаю, что это конфликт с аннотациями @onOpen. (@onMessage работает отлично).
Как я могу это исправить и использовать аспект ведения журнала для таких функций?