gpt4 book ai didi

java - @Timeout 注释方法上的 AroundInvoke 拦截器不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:42:38 28 4
gpt4 key购买 nike

应用服务器:JBOss 4.2

我有一个要拦截的方法。它是一个注释为@Timeout 并由 javax.ejb.TimerService 实例调用的方法。

方法签名:

@Stateless
class A
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
@Timeout
@Interceptors(AnInterceptor.class)
public void doSomething(Timer timer)...

现在我有了拦截器类:

public class AnInterceptor {
@AroundInvoke
public Object intercept(InvocationContext ic) throws Exception{...
System.out.prin(...)

它确实适用于其他方法方法(未使用@Timeout 进行注释)

谢谢,杆

最佳答案

根据规范,超时方法不支持 AroundInvoke(仅限业务接口(interface)、组件接口(interface)和网络服务端点)。在 Google 上搜索,EJB 3.1 中似乎出现了 AroundTimeout(第 12 和 22 页):

http://www.ow2.org/xwiki/bin/download/Events2009AnnualConference/Program/JavaEE6-EasyBeans-F-Benoit.pdf

与此同时,您可以通过将对同一 bean 的引用注入(inject)自身来解决该问题。换句话说,从“A”中注入(inject)(或查找)另一个“A”,然后从您的“doSomething”方法中创建并调用一个新的“doTimeout”方法。

关于java - @Timeout 注释方法上的 AroundInvoke 拦截器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1259005/

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