石家庄二手房最新急出售,昆明做网站优化的公司,企业查查官网入口官网,网站开发技术有什么软件bean创建异常让我们快速回顾一下关于消息驱动Bean的特殊处理。 MDB的入口点是重写的onMessage方法。 它不提供引发检查异常的作用域#xff0c;因此#xff0c;如果要处理错误情形#xff0c;则需要从代码中传播未检查异常#xff08;java.lang.RuntimeException的子类因此如果要处理错误情形则需要从代码中传播未检查异常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注释异常类并将其余的留给容器一样简单:-) 参考资料 EJB3.2规范是465页的PDF乍一看可能令人生畏但它仍然是一个很好的资源而且并不难掌握。 如果您想更详细地了解异常处理语义请查阅第9章 该主题专门针对该主题。 干杯! 翻译自: https://www.javacodegeeks.com/2015/06/quick-tip-exception-handling-in-message-driven-beans.htmlbean创建异常