gpt4 book ai didi

java - 消息驱动 Bean 的过滤器类

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:23:43 24 4
gpt4 key购买 nike

我有如下要求:

我们的应用程序中有 20 个消息驱动的 Bean,当每个 bean 的消息到达时,我需要将该信息记录到有关消息的数据库中。我可以将它添加到每个 bean,但我需要为每个 bean 更改每个类。

有没有一种方法可以添加一些 Filter 类,这些类将在执行 MDB onMessage 方法之前触发。这样,我就可以使用一个类来记录所有 MDB 消息

最佳答案

一般来说,您应该使用一些 AOP 技术。详细地说,EJB 提供了一种在 MDB 上应用拦截器的简单方法:

public class LoggingInterceptor {
...
@AroundInvoke
protected Object myInterceptor(InvocationContext ctx) throws Exception {
//do logging here...
return ctx.proceed();
}
}

@Interceptors(LoggingInterceptor.class)
public class SomeBean implements MessageListener {
public void onMessage(Message message) {
//....
}
}

示例取自 Configuring an Interceptor Class for an EJB 3.0 MDB .

要通过评论解决您的问题:您可以访问 InvocationContext在公开所有必需属性的拦截器中:

String class = ctx.getMethod().getDeclaringClass().getName();
Message msg = (Message)ctx.getParameters()[0];

请注意,您甚至可以更改参数或在拦截器中使用不同的参数。

您用 标记了您的消息和 .在 Spring AOP选项更加灵活,但总体思路仍然适用。

关于java - 消息驱动 Bean 的过滤器类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8908155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com