bean创建异常

让我们快速回顾一下关于消息驱动Bean的特殊处理。

MDB的入口点是重写的onMessage方法。 它不提供引发检查异常的作用域,因此,如果要处理错误情形,则需要从代码中传播未检查异常(java.lang.RuntimeException的子类)。

异常类型

EJB规范定义了两类异常,并且容器根据明确陈述的语义(同样,在EJB规范中)将一种与另一种区别。

应用例外

如果您抛出不是java.rmi.RemoteException或其子类的已检查异常(对于MDB而言是不可能的,但其他EJB可以使用此异常),或者它不是以@ javax.ejb.ApplicationException注释的RuntimeException(未检查),则该容器是将其视为应用程序异常。 因此,如果由@ javax.ejb.ApplicationException rollback属性指定,它将回滚事务,并保留MDB实例以供重用–这是非常重要的注意事项。

@ApplicationException(rollback = true)
public class InvalidCustomerIDException extends RuntimeException {public InvalidCustomerIDException(){super();}
}

系统异常

如果抛出java.rmi.RemoteException (已检查的异常)或其子类,或者抛出了未使用@ javax.ejb.ApplicationException注释的RuntimeException(未检查),则容器会将其视为系统异常。 结果,它执行某些操作,例如事务回滚,并丢弃MDB实例(这很关键)

public class SystemExceptionExample extends Exception {public SystemExceptionExample(){super();}
}

重要的是要考虑到MDB实例的丢弃 。 如果发生系统异常,容器将始终丢弃该实例–因此,请确保您出于预期的原因使用这些异常。 如果您使用的是应用程序异常,并且它们是未经检查的(对于MDB,则必须是它们),请确保使用@ javax.ejb.ApplicationException对其进行注释–这将确保不丢弃 MDB实例本身。

在高负载下,您可能希望池中有尽可能多的MDB,并且希望避免MDB实例退出服务状态。 明智的异常处理可以帮助您实现此目标。 就像用@ javax.ejb.ApplicationException注释异常类并将其余的留给容器一样简单:-)

参考资料

EJB(3.2)规范是465页的PDF,乍一看可能令人生畏,但它仍然是一个很好的资源,而且并不难掌握。 如果您想更详细地了解异常处理语义,请查阅第9章 ,该主题专门针对该主题。

干杯!

翻译自: https://www.javacodegeeks.com/2015/06/quick-tip-exception-handling-in-message-driven-beans.html

bean创建异常

bean创建异常_快速提示:消息驱动Bean中的异常处理相关推荐

  1. 火狐侧边栏_快速提示:在Firefox中使用Google Talk边栏

    火狐侧边栏 Instead of using the Google Talk client embedded in Gmail, why not use it in your sidebar inst ...

  2. 快速提示:消息驱动Bean中的异常处理

    让我们快速回顾一下有关消息驱动Bean的特殊处理. MDB的入口点是重写的onMessage方法. 它不提供引发检查异常的任何作用域,因此,如果要处理错误情形,则需要从代码中传播未检查异常(java. ...

  3. EJB 3.0中会话Bean,实体Bean,消息驱动Bean的作用和例子

    关键词:EJB 3.0,会话Bean,实体Bean,消息驱动Bean EJB 3.0规范使开发EJB比过去更容易,可能诱惑你考虑开发第一个EJB.如果真是这种情况,那么祝贺你,你已经成功避免了在你以前 ...

  4. aws sqs_在Spring使用AWS SQS创建消息驱动Bean

    aws sqs 在我之前的文章中,我展示了一个简单的示例,该示例如何将AWS SQS与Spring Framework结合使用以将消息放入队列并从队列中读取消息. 在本文中,我将更进一步,并使用Spr ...

  5. 在Spring使用AWS SQS创建消息驱动Bean

    在我之前的文章中,我展示了一个简单的示例,该示例如何将AWS SQS与Spring Framework结合使用以将消息放入队列中并从队列中读取消息. 在本文中,我将更进一步,并使用Spring创建一个 ...

  6. 鼠标悬停字体抖动_快速提示:解决悬停状态下的字体粗细问题

    鼠标悬停字体抖动 Have you ever tried to change the value of the font-weight property on link states? If yes, ...

  7. bootstrap手风琴_快速提示:如何自定义Bootstrap 4的手风琴组件

    bootstrap手风琴 在此快速提示中,我们将构建Bootstrap 4手风琴,通过一些CSS更改对其进行定制,并应用一些JavaScript定制. 让我们开始吧! 注意 :本教程假定您对Boots ...

  8. java 非法操作异常_电脑提示非法操作怎么办 电脑系统故障解决方法【详解】

    电脑提示非法操作怎么办? 在电脑操作中,出现"非法操作"提示的几率比蓝屏现象要多出一筹.造成"非法操作"的原因主要出自软件.当一个程序访问其内存地址空间之外的内 ...

  9. linux中怎么安装ded包_快速提示:如何在Linux中安装.deb和.tar文件 - push博客

    在本快速教程中,我将解释如何使用终端命令在Linux中安装程序.本教程使用LinuxMint 18(肉桂64位),但是下面提供的命令对于其他版本的Linux是通用的,比如Ubuntu.对于那些刚接触l ...

最新文章

  1. Python之os模块用法
  2. Python视频处理库:scikit-video
  3. Java基础篇:泛型与类型擦除
  4. Give root password for maintenance 问题解决.
  5. 主域控宕机无法恢复后,如何配置辅助域控继续工作
  6. 使用 Tye 辅助开发 k8s 应用竟如此简单(五)
  7. GitHub 上最受欢迎的 5 大 Java 项目
  8. EditText自定义边框和背景
  9. Mysql 的 Explain性能分析
  10. IP防护等级测试设备(IPX1.2.3.4.5.6.9)
  11. win7电脑误删鼠标键盘驱动_重装win7系统后鼠标键盘无法使用解决方法
  12. 苹果系统 怎么找到共享计算机,Mac电脑怎么访问共享文件夹
  13. activiti学习之回退实现
  14. 预览文件乱码解决方法记录
  15. 笔记:戴蒙德模型——参数变化的影响
  16. Java Scaner类详解_动力节点Java学院整理
  17. 腾讯邮箱 新浪邮箱 网易 免费企业邮箱 阿里云/万网域名MX解析配置
  18. lammps教程:径向分布函数g(r)的计算与输出方法
  19. SOLID 设计原则 (有点长但很透彻)
  20. 《计算几何》学习笔记

热门文章

  1. P1407-[国家集训队]稳定婚姻【tarjan,强连通分量】
  2. P3701 -「伪模板」主席树【网络流,最大流】
  3. 2021牛客暑期多校训练营4 B-Sample Game(概率DP)
  4. codeforces1271 D. Portals(dp or 带悔贪心)
  5. Sentinel(二十一)之Sentinel Dashboard控制台日志路径设置
  6. 【附答案】Java面试2019常考题目汇总(一)
  7. Redis 常用操作命令,非常详细
  8. Oracle入门(十二G)之序列
  9. 今天你们表现的真棒!!!
  10. Java中的TreeSet集合会自动将元素升序排序