gpt4 book ai didi

java - EJB 计时器 : put in a method with Exception, @Timeout 注释

转载 作者:太空宇宙 更新时间:2023-11-04 06:25:10 25 4
gpt4 key购买 nike

大家早上好,
我写信给您是因为我想创建一个 EJB 计时器。
但我的 @Timeout 注释方法必须抛出应用程序异常。
我在文档中看到 @Timeout 方法不能引发应用程序异常。



<前>@Stateless@Local
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
公共(public)类 AccesCacheImpl 实现 AccesCache {

@资源
私有(private) TimerService 服务 Minuteur;

//我必须每 30 分钟更新一次DataBase
公共(public)无效 creerTimer() {
serviceMinuteur.createTimer(1000, 1800000, "MinuteurCache");
}

公共(public)无效detruireTimer(){
定时器timerCourant;
for (最终对象计时器: serviceMinuteur.getTimers()) {
计时器Courant =(计时器)计时器;
if ("MinuteurCache".equals(timer)) {
timeCourant.cancel();
}
}
}

@暂停
public void updateDataBase(final Timer pTimer) 抛出 AccesNomenclatureException {
……
……
……
}

}


我开始EJB编程:你觉得我的代码还好吗?
我有必要保留这个异常(exception)。
您遇到过这样的问题吗?
非常感谢。

最佳答案

应用程序异常旨在向调用者提供附加信息。在这种情况下,@Timeout 方法的调用者是 EJB 容器,它无法知道应用程序异常的意图,因此它们是不允许的。如果您需要向容器发出失败信号以便其重试,我建议捕获 AccesNomenclatureException 并将其重新抛出为 EJBException,这是系统异常而不是应用程序异常。否则,如果您只是想忽略失败,那么捕获它并记录它,而不是重新抛出它。

关于java - EJB 计时器 : put in a method with Exception, @Timeout 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26884169/

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