引发应用程序异常会导致TransactionalException

部分

我正在实现JEE7 Web应用程序。在工作期间,我发现处理自定义异常存在问题。

我修改了帐户的属性,使其具有非唯一的登录字段。然后,我调用AccountEditBean#editAccount()来运行编辑过程。当过程到来时,AccountFacade#edit()我可以看到(在调试中)PersistenceException被捕获并且NonUniqueException抛出了我的自定义问题是,异常不会传播到Facade类之外,并且不会在中处理AccountEditBean而不是在以下时间TransactionalException发生throw

WARNING:   EJB5184:A system exception occurred during an invocation on
EJB ADMEndpoint, method: public void
pl.rozart.greatidea.adm.endpoints.ADMEndpoint.editAccount(pl.rozart.greatidea.entities.Account)
throws pl.rozart.greatidea.exceptions.BaseApplicationException
WARNING:   javax.transaction.TransactionalException: Managed bean with
Transactional annotation and TxType of REQUIRES_NEW encountered
exception during commit javax.transaction.RollbackException:
Transaction marked for rollback.

附加信息:NonUniqueException扩展BaseApplicationException,标记为@ApplicationException(rollback=true)

这是编辑过程的代码:

AccountEditBean:

@Named(value = "accountEditBean")
@ViewScoped
public class AccountEditBean extends UtilityBean implements Serializable {

    @Inject
    ADMEndpointLocal admEndpoint;

    private Account account;

    public void editAccount() {
        try {
            admEndpoint.editAccount(this.account);
            Messages.addInfo(ACCOUNT_DETAILS_FORM, KEY_CHANGES_SUCCESS);
        } catch (NonUniqueException e) {
            Messages.addError(ACCOUNT_DETAILS_FORM, e.getMessage());
        } catch (BaseApplicationException e) {
            Messages.addFatal(ACCOUNT_DETAILS_FORM, e.getMessage());
        }
    }

}

ADM端点:

@Stateful
@Transactional(Transactional.TxType.REQUIRES_NEW)
@TransactionTracker
public class ADMEndpoint extends LoggingStateBean implements ADMEndpointLocal, SessionSynchronization {

    @EJB(name = "ADMAccountFacade")
    private AccountFacadeLocal accountFacade;

    private Account account;

    @Override
    public void editAccount(Account account) throws BaseApplicationException {
        this.account.setLogin(account.getLogin());
        this.account.setEmail(account.getEmail());
        accountFacade.edit(this.account);
    }

}

ADMAccountFacade:

@Stateless(name = "ADMAccountFacade")
@Transactional(Transactional.TxType.MANDATORY)
@TransactionTracker
public class AccountFacade extends AbstractFacade<Account> implements AccountFacadeLocal {

    @PersistenceContext(unitName = "myPU")
    private EntityManager em;

    @Override
    public void edit(Account account) throws BaseApplicationException {
        try {
            em.merge(account);
            em.flush();
        } catch (PersistenceException e){
            if(e.getMessage().contains(Account.CONSTRAINT_ACCOUNT_LOGIN_UNIQUE)){
                throw new NonUniqueException(NonUniqueException.MSG_NON_UNIQUE_ACCOUNT_LOGIN, e);
            }else{
                throw new BaseDatabaseException(BaseDatabaseException.MSG_GENERAL_DATABASE_ERROR, e);
            }
        }
    }
}

您知道造成问题的原因吗?除所有自定义例外外,它都出现在我的所有外观中。

虱子

我认为您应该更改@Transactional为,@TransactionAttribute因为EJB对此做了注释。@Transactional是放在Java 7中而不是在EJB中的ManagedBean上的...

我在这里复制了我的评论,因为我没有足够的要浪费的地方了:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

未处理的异常会中断应用程序吗?

来自分类Dev

未处理的异常会中断应用程序吗?

来自分类Dev

WSGI应用程序引发了异常

来自分类Dev

为什么异步Parallel.ForEach中的异常会使应用程序崩溃?

来自分类Dev

AsyncTask中未捕获的异常会使应用程序崩溃吗?

来自分类Dev

是什么会导致Swing应用程序不一致地引发null指针异常?

来自分类Dev

RegionInfo在Windows 8.1应用程序中引发异常

来自分类Dev

C#Winforms应用程序挂起,而不是引发异常

来自分类Dev

引发异常后,应用程序不退出

来自分类Dev

TimeZoneInfo.FindSystemTimeZoneById()在Unity应用程序中引发异常

来自分类Dev

我的应用程序在执行时引发异常

来自分类Dev

C#Winforms应用程序挂起,而不是引发异常

来自分类Dev

应用程序在预定时间内导致异常

来自分类Dev

空指针异常导致应用程序崩溃

来自分类Dev

异常后地图崩溃导致应用程序崩溃

来自分类Dev

导致应用程序崩溃的 Android SQlite 异常

来自分类Dev

我自己的异常处理程序仍会引发异常并使应用程序崩溃

来自分类Dev

内存异常会导致NullPointerException吗?

来自分类Dev

应用程序在Activity中引发java.lang.StackOverflowError异常

来自分类Dev

获取早先在应用程序C#中引发的异常?

来自分类Dev

应用程序崩溃而未在Windows Phone 8.1 XAML中引发任何异常

来自分类Dev

CorePlot在iOS7应用程序/ Xcode5中引发异常

来自分类Dev

引发自定义异常Azure移动应用程序简易表格脚本

来自分类Dev

如果通过Wscript.shell调用的外部应用程序引发异常,则PHP脚本将挂起

来自分类Dev

在Tomcat的Web应用程序中记录所有引发的异常

来自分类Dev

应用程序在负载终止时崩溃,并引发了NSException类型的未捕获异常

来自分类Dev

如何为引发异常的Python控制台应用程序运行Python调试器

来自分类Dev

“不正确的Content-Type:”异常引发Angular MVC 6应用程序

来自分类Dev

应用程序类'com.sun.xml.messaging.saaj.soap.SOAPPartImpl.:119'引发的异常

Related 相关文章

  1. 1

    未处理的异常会中断应用程序吗?

  2. 2

    未处理的异常会中断应用程序吗?

  3. 3

    WSGI应用程序引发了异常

  4. 4

    为什么异步Parallel.ForEach中的异常会使应用程序崩溃?

  5. 5

    AsyncTask中未捕获的异常会使应用程序崩溃吗?

  6. 6

    是什么会导致Swing应用程序不一致地引发null指针异常?

  7. 7

    RegionInfo在Windows 8.1应用程序中引发异常

  8. 8

    C#Winforms应用程序挂起,而不是引发异常

  9. 9

    引发异常后,应用程序不退出

  10. 10

    TimeZoneInfo.FindSystemTimeZoneById()在Unity应用程序中引发异常

  11. 11

    我的应用程序在执行时引发异常

  12. 12

    C#Winforms应用程序挂起,而不是引发异常

  13. 13

    应用程序在预定时间内导致异常

  14. 14

    空指针异常导致应用程序崩溃

  15. 15

    异常后地图崩溃导致应用程序崩溃

  16. 16

    导致应用程序崩溃的 Android SQlite 异常

  17. 17

    我自己的异常处理程序仍会引发异常并使应用程序崩溃

  18. 18

    内存异常会导致NullPointerException吗?

  19. 19

    应用程序在Activity中引发java.lang.StackOverflowError异常

  20. 20

    获取早先在应用程序C#中引发的异常?

  21. 21

    应用程序崩溃而未在Windows Phone 8.1 XAML中引发任何异常

  22. 22

    CorePlot在iOS7应用程序/ Xcode5中引发异常

  23. 23

    引发自定义异常Azure移动应用程序简易表格脚本

  24. 24

    如果通过Wscript.shell调用的外部应用程序引发异常,则PHP脚本将挂起

  25. 25

    在Tomcat的Web应用程序中记录所有引发的异常

  26. 26

    应用程序在负载终止时崩溃,并引发了NSException类型的未捕获异常

  27. 27

    如何为引发异常的Python控制台应用程序运行Python调试器

  28. 28

    “不正确的Content-Type:”异常引发Angular MVC 6应用程序

  29. 29

    应用程序类'com.sun.xml.messaging.saaj.soap.SOAPPartImpl.:119'引发的异常

热门标签

归档