簡體   English   中英

Glassfish:為什么同一個MDB有兩個池:一個在ejb中,一個在戰爭中?

[英]Glassfish: Why are there 2 pools for the same MDB: one in ejb and one in war?

場景:

我有一個在GF 3.1.2上運行的java maven ear項目。 在該項目中,我想使用在單個ejb模塊中定義的MDB,因此我將其作為依賴項。 所以結構如下:

ProjectEAR:
   - ProjectEJB
        - ProjectWithProblematicMDB
   - ProjectWAR
        - dependency ProjectEJB with scope provided

實際問題:

當在jconsole的幫助下將其部署到glassfish時,我看到了ProblematicMDB的兩個不同的MDB池:一個在ejb模塊中,一個在war模塊中。 它們不是同一個池,因為我已經在ProjectEJB上設置了部署描述符以將池的大小限制為1,並且ProjectEJB中的池的大小不會大於1,但是ProjectWAR中的池的大小會增加。

對於ProjectEJB中稱為依賴項的模塊中的所有MDBS =,這會發生,而對於ProjectEJB中的“本地” MDB,則不會發生這種情況。 我必須提到一個事實,就是我不能從戰爭中排除ProjectWithProblematicMDB,因為我在那里使用了一些bean(而不是mdb)。

問題:

為什么同一MDB有兩個池? 在這種情況下,如何只有一個池?

我終於找到了原因和解決方案。

原因:

查看.ear檔案,我看到“本機” ejb(ProjectEJB)被放置在檔案的根目錄中,而“獨立” ejb(ProjectWithProblematicMDB)被包裝在lib文件夾中。 由於某些原因,glassfish也在.war模塊中創建了池。

解:

將ProjectWithProblematicMDB作為依賴項添加到ProjectEAR中,使Maven還將其打包到.ear歸檔文件的根目錄中,並且不再位於lib文件夾中。 以這種形式部署應用程序后,不再創建第二個池(來自.war的池)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM