2010-08-17 30 views
0

運行我的應用程序時,我很困惑。我的應用程序由EJB和servlet組成。我需要知道的是,這些應用程序類型的類加載器是相同的還是不同的。我正在使用weblogic作爲應用程序容器。 請幫幫我。是不同的應用程序的類加載器可以不同?

回答

2

在我的應用程序中有一個類是單例和類加載器dependent.And問題是當類加載器更改時,我的類的實例更改,我需要使用相同的類實例生活的時間。

是的,有一個系統類加載器,所有的webapp類加載器將委派給。

要讓您的類進入該類加載器,您需要確保它在相關的類路徑中。例如在Tomcat中,你可以把JAR文件放到$ CATALINA_HOME/lib中(如果我正確記住的話)。

這樣說了,我不相信在多個webapps之間共享應用程序單例是好設計。

1

您會發現每個應用程序通常都會加載到它自己的類加載器實例中。類加載器將成爲Web容器提供的類,但每個運行的應用程序都會有一個實例。這允許應用程序彼此隔離,並且可以加載許多實例,而不管它們是使用靜態/類變量還是單例等。

+0

。這意味着類加載器可以針對不同的應用程序而不同。但是有一個主類加載器即,系統類加載器,我感覺應用程序的生命週期保持不變。在我的應用程序中有一個類是單例和類加載器的依賴。問題是當類加載器發生變化時,我的類的實例發生更改,並且我需要在整個生命週期中使用類的相同實例。而上述情況只有在我使用相同的類加載器時纔有可能。請幫幫我。 – 2010-08-17 07:13:51

+0

請看下面的Baski提供的鏈接。搜索「打包共享實用程序類」。 – 2010-08-17 07:37:20

1

WebLogic使用分層類加載器。你的應用程序如何打包?它是EAR還是WAR + JAR?

This link將會有所幫助。

相關問題