Java 为什么我的日志特性阻止netty websocket函数被触发?

Java 为什么我的日志特性阻止netty websocket函数被触发?,java,websocket,aop,aspectj,Java,Websocket,Aop,Aspectj,我的日志特性阻止netty websocket函数(OnOpen、OnMessage等)被触发 我有一个基于netty websocket的服务器,它在连接到新客户机或接收消息时执行一些指定的功能。这些功能正常工作 最近,我添加了一个日志方面来记录这些函数的详细信息。出乎意料的是,这会阻止触发这些函数(而且日志方面本身也不起作用) 日志方面与其他功能一起正常工作 日志方面代码: @方面 @组成部分 公共类ServiceLogAspect{ @大约(“执行(*com.test.server.Web

我的日志特性阻止netty websocket函数(OnOpen、OnMessage等)被触发

我有一个基于netty websocket的服务器,它在连接到新客户机或接收消息时执行一些指定的功能。这些功能正常工作

最近,我添加了一个日志方面来记录这些函数的详细信息。出乎意料的是,这会阻止触发这些函数(而且日志方面本身也不起作用)

日志方面与其他功能一起正常工作

日志方面代码:

@方面
@组成部分
公共类ServiceLogAspect{
@大约(“执行(*com.test.server.WebSocketServer.onOpen(..)”)
周围的公共对象(ProceedingJoinPoint jp)抛出可丢弃{
客观结果;
System.out.println(“周围”);
试一试{
结果=jp.procedure();
返回结果;
}捕获(可丢弃的e){
e、 printStackTrace();
}
返回null;
}
websocket函数代码:


@ServerEndpoint(前缀=“netty websocket”)
@组成部分
公共类WebSocketServer{
@奥诺彭
public void onOpen(会话会话、HttpHeaders标头、ParameterMap ParameterMap)引发IOException{
System.out.println(“会话:“+session+”,新连接”);//未执行
}
我也尝试过@Before,这导致了同样的失败

“执行(*com.test.server.WebSocketServer.onOpen(..)”) public void before方法(连接点){ System.out.println(“方法前”); }

我认为这是与注释“OnOpvice”的冲突。(OnMead工作得很好)。


我如何修复它并在这些功能上使用日志功能?

如果您将建议从
@左右更改为
@之前
@之后
并只打印“日志记录”,它是否有效?如果是这样,那么您的around建议中可能有一个问题,您在这里没有向我们展示,因为它只是伪代码。如果没有代码,这很难用您的应用程序类的片段和不完整的方面来判断。@kriegaex Thx for apply,我在
之前尝试过
,这导致了同样的失败。我已经修改了t有问题的代码片段,即使是最简单的建议也不起作用。感谢您的更新。我现在可以看到您的aspect由
@Component
注释,所以我们这里可能讨论的是Spring AOP,而不是AspectJ,对吗?您的描述或标记中没有任何建议。因此,我们正在处理一种AOP方法h基于动态JDK或CGLIB代理,这可能是问题的一部分。但如果没有完整的MCVE,我无法确定。您能否在GitHub上发布一个包含Maven build的版本?我希望能够编译并运行您的代码以重现问题。抱歉,您在此处的编辑肯定不够。如果您更改了周围
@的建议在
之前或之后取消>到
,只需打印“日志”,它是否有效?如果是这样,那么您的around建议中可能有一个问题,您在这里没有向我们展示,因为它只是伪代码。如果没有代码,这很难用您的应用程序类的片段和不完整的方面来判断。@kriegaex Thx for apply,我在之前尝试过
,这导致了同样的失败。我已经修改了t有问题的代码片段,即使是最简单的建议也不起作用。感谢您的更新。我现在可以看到您的aspect由
@Component
注释,所以我们这里可能讨论的是Spring AOP,而不是AspectJ,对吗?您的描述或标记中没有任何建议。因此,我们正在处理一种AOP方法h基于动态JDK或CGLIB代理,这可能是问题的一部分。但如果没有完整的MCVE,我无法确定。能否在GitHub上发布一个包含Maven build的版本?我希望能够编译并运行您的代码以重现问题。您在这里的编辑肯定不够,抱歉。