2009-11-09 25 views
0

我有一個遺留應用程序,我試圖移植到Java EE。目前這個應用程序調用URL.setURLStreamHandlerFactory()來註冊一些自定義的URL協議處理程序。這次調用在Glassfish v 2.1和3下失敗,因爲glassfish已經註冊了一家工廠。glassfish中的新URLStreamHandlers

我使用java.protocol.handler.pkgs系統屬性試過了,但是,這並不適合我,由於類加載器問題開展工作。處理程序類都是應用程序的一部分,我不想嘗試提取它們並將容器放入容器的類路徑中。

我有OSGi包的氣息 - 顯然我可以寫會應對新的協議束。我並不熱衷於使這個Web應用程序成爲一個osgi包(一次一個步驟!首先是EE,如果需要的話,然後是osgi)。

是否有可能彈出一個包JAR在我的WEB-INF/lib目錄,並將它Glassfish的負荷捆綁?該軟件包需要從Web應用程序(WEB-INF/lib或WEB-INF/classes中的另一個jar)導入包。我願意將這個應用程序打包爲EAR,如果這個應用程序可以工作的話,我不能在不知道更多的情況下對整個應用程序進行整合。

回答

1

我已經解決了我的問題。顯然,我有一些線,因爲java.protocol.handler.pkgs系統屬性工作正常。

對於任何其他人絆倒了,我把罐子我在$ DOMAINDIR/lib/ext目錄/以及在我的WAR的WEB-INF/lib目錄處理程序。在我的應用程序的配置中,我也放了一個jvm選項-Djava.protocol.handler.pkgs = my.handlers.pkg.prefix

我注意到glassfish 2.1沒有jvm選項,如果我把前綴一些啓動代碼,但在glassfish 3中,jvm選項是必需的,因爲felix(osgi實現glassfish正在使用)僅在服務器啓動時諮詢屬性,而不是針對每個請求。