2012-07-31 92 views
2

我有一個ebj使用一些外部庫(在這種情況下,這些庫是由我自己編寫的)。我已經將它們包含在我的EJB中。Glassfish 3.1.2在應用程序部署後重新加載需要的jar文件

問題是玻璃魚似乎只加載所需的瓶子一次(在第一次部署時),並且認爲他已經有用於進一步部署的罐子。這只是一種假設,但如果我在由EJB使用的庫中的一個做任何修改,重新部署EJB,之前,將不會應用更改... Glassfish的仍然使用舊的瓶子,他可能會保持在高速緩存或類似的東西(我可以在glassfish存儲庫中找到罐子的任何標記)。

我迄今發現的唯一解決方案是重新啓動服務器......並非真正適用於開發/測試會話,您必須等待glassfish重新啓動您所做的每一項小改動。

我的問題是:有沒有辦法避免這種行爲,並迫使glassfish在每次部署時重新加載所需的罐子?

感謝您閱讀我。

注意:我正在使用netbeans進行本地部署,但是直接從glassfish管理控制檯執行操作會導致相同的結果。

回答

0

我在Windows平臺上遇到了與Glassfish 3.1.2相同的問題。當應用程序被刪除或從我的IDE調配,東西有這些文件公開,(顯然)的Windows不會」讓部署操作刪除它們。

我的解決方案是在每次發佈時使用「Real Jar Archives for Deployment」將部署更改爲「完全部署」,而不是更動態和更快速的「目錄部署」。

我不知道如何爲Netbeans進行此更改,因爲我不再使用Netbeans。

對於Eclipse:雙擊您的服務器上的Servers視圖/選項卡以打開服務器的Overview設置。頁面底部的設置是User (sic) Real Jar Archives for Deployment ...。檢查它(默認情況下未選中),然後重試。

+0

我會嘗試看看如何使用netbeans獲得此行爲。它顯然被oracle標記爲bug,我讀到的一個解決方案是將ejb添加到企業應用程序中。它的工作原理,除非你添加netbeans插件依賴到你的EJB,這就是我所做的。謝謝。 – nathan 2012-08-01 07:38:55

+0

我不知道其他人是否也這樣做,但我必須將netbeans插件添加到我的EJB依賴關係中。它完美的作品,但當我試圖做我曾經提到過的與我的企業應用程序的評論的技巧。它會導致這樣的錯誤:在EE應用程序編譯的項目中不存在「Target」dist-ear「。我正在嘗試查看原因。 – nathan 2012-08-01 08:49:06

0

行,所以我終於得到了一些具體成果。我不知道是否有很多人以我的方式工作,但我會公開我找到的適合我需求的解決方案。首先,如果您在使用netbeans平臺的獨立java客戶端上部署EJB(所以使用netbeans插件),您可能會感到擔憂。

問題是glassfish(3.1.2,我不知道其他版本是否出現同樣的問題)在重新部署EJB時不重新加載所需的jar。所以,如果你的EJB有一定的依賴性,如果一些變化在他們提出,GlassFish中不會看到他們,並會繼續使用舊罐子甚至EJB(重新)部署後。所以,我認爲這將是相當快解決(或沒有),但直到甲骨文做他的工作,這裏是一個解決它標記爲甲骨文的錯誤。

注意:只有當您的EJB具有netbeans插件依賴關係時纔會發生此錯誤。如果不是您的情況,您可以將EJB添加到企業應用程序中並進行部署,並且您的jar將自動重新加載。

假設你在我的情況。如果你編譯你的EE應用程序,其中包含依賴於netbeans插件的EJB。您可能會得到這個錯誤:

Target "dist-ear" does not exist in the project "the path your netbeans plugin" 

爲了解決這個問題,我已經添加了目標到 build-impl.xml中文件的插件。

<target name="dist-ear" /> 

然後添加netbeans插件作爲企業應用程序的依賴項。

重新部署應用程序後,EJB的依賴關係可能已經加載,您不需要重新啓動您的glassfish服務器。

相關問題