国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

EJB異常處理

2018-12-09 18:16 更新

EJB是通常基于分布式環(huán)境中的企業(yè)應用程序的一部分。所以除了正常的異常發(fā)生在代碼中,可以在ejb的情況下,可以有例外喜歡通信失敗,安全權限,服務器等ejb容器認為在兩個方面存在異常。

  • 應用程序異常 -如果業(yè)務規(guī)則是voilated或在執(zhí)行業(yè)務邏輯發(fā)生異常。

  • 系統(tǒng)異常 -這不是由業(yè)務邏輯或業(yè)務代碼造成的任何異常。 運行時 Exception,遠程異常都是 SystemException例如,在EJB 查找錯誤。


EJB容器如何處理異常?

When Application Exceptionoccurs ejb容器攔截例外,但返回相同的客戶機。它不回滾事務,除非它在代碼中指定EJBContext.setRollBackOnly()方法。EJB容器不包裝異常的應用程序異常。


系統(tǒng)發(fā)生異常時,EJB容器攔截異常,回滾事務,并開始清理任務。它包裝成例外和RemoteException拋出給客戶端。


處理應用程序異常

應用程序異常在會話EJB方法,因為這些通常是拋出負責執(zhí)行業(yè)務邏輯的方法。應用程序異常應宣布投業(yè)務方法的條款,應在案件的業(yè)務邏輯失敗被拋出。

@Stateless
public class LibraryPersistentBean implements LibraryPersistentBeanRemote {
	
   ...

   public List<Book> getBooks() throws NoBookAvailableException {        
      List<Book> books = 
         entityManager.createQuery("From Books").getResultList();
	  if(books.size == 0)
		throw NoBookAvailableException
           ("No Book available in library.");
	  return books;
   }
   ...
}


處理系統(tǒng)異常

系統(tǒng)異常可以在喜歡的命名查找失敗的任何時間發(fā)生,而獲取數據時發(fā)生SQL錯誤。在這種情況下,這種異常應出現EJBException包裹,拋回給客戶端。

@Stateless
public class LibraryPersistentBean implements LibraryPersistentBeanRemote {
	
   ...

   public List<Book> getBooks() {   
      try {
         List<Book> 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<Book> booksList = libraryBean.getBooks();
   } catch(EJBException e) {
      Exception ne = (Exception) e.getCause();
      if(ne.getClass().getName().equals("SqlException")){
	     System.out.println("Database error: "+ e.getMessage());
      }
   }
   ...
   }
}

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號