zoukankan      html  css  js  c++  java
  • 雷林鹏分享:EJB异常处理

      EJB是它们通常分布基于环境的企业应用程序的一部分。因此,除了可能出现在代码中,在EJB的情况下正常例外,可以有例外,像通信故障,安全权限,服务器关闭等EJB容器认为例外两种方式。

      应用程序异常 -如果业务规则是voilated或在执行业务逻辑发生异常。

      系统异常 -这不是由业务逻辑或业务代码造成的任何异常。RuntimeException的,是RemoteException的SystemException的。例如,错误在EJB查找。

      EJB容器如何处理异常?

      当应用程序异常发生时,EJB容器截获的异常,但返回相同的客户端,因为它是。它不会回滚事务,除非它是由EJBContext.setRollBackOnly()方法中指定的代码。EJB容器不中的情况下应用程序异常的包装异常。

      当系统异常时,EJB容器拦截异常,回滚事务,并开始清理任务。它包装异常到的RemoteException和它抛出给客户端。

      处理应用程序异常

      应用程序异常一般扔在会话EJB方法,因为这些都是负责执行业务逻辑的方法。应用程序异常应宣布抛出的商业方法条款,并应出现故障时业务逻辑被抛出。

      @Stateless

      public class LibraryPersistentBean implements LibraryPersistentBeanRemote {

      ...

      public List getBooks() throws NoBookAvailableException {

      List books =

      entityManager.createQuery("From Books").getResultList();

      if(books.size == 0)

      throw NoBookAvailableException

      ("No Book available in library.");

      return books;

      }

      ...

      }

      处理系统异常

      系统异常可发生在类似命名查找失败的任何时间,在获取数据时发生SQL错误。在这种情况下,这种异常应EJBException的下包,丢回给客户端。

      @Stateless

      public class LibraryPersistentBean implements LibraryPersistentBeanRemote {

      ...

      public List getBooks() {

      try {

      List books =

      entityManager.createQuery("From Books").getResultList();

      } catch (CreateException ce){

      throw (EJBException) new EJBException(ce).initCause(ce);

      } catch (SqlException se){

      throw (EJBException) new EJBException(se).initCause(se);

      }

      return books;

      }

      ...

      }

      在客户端,处理出现EJBException。

      public class EJBTester {

      private void testEntityEjb(){

      ...

      try{

      LibraryPersistentBeanRemote libraryBean =

      LibraryPersistentBeanRemote)ctx.lookup("LibraryPersistentBean/remote");

      List booksList = libraryBean.getBooks();

      } catch(EJBException e) {

      Exception ne = (Exception) e.getCause();

      if(ne.getClass().getName().equals("SqlException")){

      System.out.println("Database error: "+ e.getMessage());

      }

      }

      ...

      }

      }

      (编辑:雷林鹏 来源:网络|侵删)

  • 相关阅读:
    Linux学习32
    Linux学习31-如何查看 linux 系统是centos还是ubuntu,并查看系统版本号
    python测试开发django-124.bootstrap点删除按钮弹确认删除
    python测试开发django-123.bootstrap模态框(modal)垂直居中显示
    python测试开发django-122.bootstrap模态框(modal)学习
    Linux下查询tomcat进程命令
    linux服务器通过X11实现图形化界面显示 1 背景描述
    linux(centos)配置ipv6网卡
    linux 下给网卡添加ipv6、路由
    2021年最新大厂php+go面试题集(1)
  • 原文地址:https://www.cnblogs.com/pengpeng1208/p/13152219.html
Copyright © 2011-2022 走看看