我在我的portlet中使用了多個jar,例如c3p0。現在我想避免將jar放入每個portlet的lib文件夾中。我如何在多個portlet中共享一個jar文件?我應該如何將它們集成到Eclipse IDE中?添加一個外部jar或將它們放在一個專用項目中,並從那裏包含它們?如何在多個portlet中共享jar?
回答
另一個解決方案是將它們放在../liferay-portal-<version>/tomcat-<version>/webapps/ROOT/WEB-INF/lib
如果你把他們在這裏你可以添加JAR作爲在門戶liferay-plugin-package.properties
您的portlet的依賴(如果你使用的Liferay開發工作室或Liferay的IDE然後有一個很好的GUI)。
然後在部署Liferay將來自ROOT/WEB-INF/lib
需要的jar複製到您的portlet WEB-INF/lib
我相信這是做Liferay的支持機制,因爲JAR文件複製到門戶並不需要重新啓動部署類路徑。
嗨,喬尼,聽起來很棒!我只剩下一個問題:在開發過程中,我在哪裏將jar文件放在我的計算機上?在我的jar文件中有我想要使用方法的類文件(當然是哈哈)。我是否將它們作爲「External Jars」添加到我的項目中,以便Java編譯器能夠訪問它們? – strauberry
我會把它們放在最適合你的地方,我的Liferay Plugins-SDK中有一個util/additional-libs文件夾。我還爲每個編譯JAR的Ant構建文件,然後將JAR複製到ROOT/WEB-INF/lib。因此,在重新部署Portlet時,更新的JAR已經在複製到portlet的正確位置。但是,如果您不使用Liferay IDE,那麼在「配置構建路徑」一節中將它們添加爲外部JAR ...並檢出Liferay IDE,因爲它會自動拾取JAR! :) – Jonny
我能想到的一種方法是將它們全部放在全局路徑中。
例如,在Tomcat中,您可以將它們放置在../liferay-portal-<version>/tomcat-<version>/lib/ext
處,然後當您在eclipse中配置服務器運行時庫時,將在構建路徑中包含這些jar。
這link也可能會幫助您決定,但它說*-service.jar
,但我不知道它會在任何一個portlet中的其他罐子。
謝謝你的回答!有沒有辦法使用瀏覽器界面進行部署?我現在經常更換常用的jar(繁重的開發),因此手動複製和粘貼並重新啓動會非常煩人...... – strauberry
進入全局類路徑的jar需要重新加載服務器。我不知道任何其他方式來實現您的要求。雖然有些工具可以幫助在沒有服務器重啓的情況下加載jar,所以你可以嘗試尋找這些。 –
把它們放到tomcat/lib/ext的好處是,那麼所有的web應用程序將共享相同的jar,由相同的類加載器加載。如果您在Web應用程序之間傳遞類的實例(例如通過會話),如果每個Web應用程序都有自己的副本,則可能會遇到ClassCastExceptions。使用lib/ext的缺點是需要重新啓動服務器才能部署新版本的jar。 –
- 1. 如何禁用Portlet共享
- 2. 要在多個portlet之間共享的單例類
- 3. 在websphere共享庫中添加共享項目jar文件
- 4. Liferay Portlet在Portlet類和JSP之間共享對象
- 5. 如何在Spring中的共享jar中導入屬性文件?
- 6. Portlet使用liferay和icefaces共享數據
- 7. 如何共享多個視圖
- 8. 如何共享多個UITableView的細胞
- 9. 如何在兩個或更多視圖中共享單個Viewmodel?
- 10. Java EE Jar文件共享
- 11. Liferay - 在兩個不同的Portlet之間共享Utils類
- 12. 如何通過Liferay中的2個不同portlet共享屬性文件?
- 13. Servlets - 在多個Servlets中共享Initialcontext
- 14. 在多個會話中共享變量
- 15. 在多個視圖中共享ViewModel
- 16. 在Oxyplot中共享軸的多個圖
- 17. 如何在兩次戰爭之間共享一個依賴(jar)在JBoss中
- 18. 在jboss 7中共享多個grails應用程序的jar是否很好?
- 19. 在EAR內部的多個EJB JAR中共享相同的JPA persistence.xml
- 20. Tomcat與捆綁Jar中的共享庫
- 21. apache-tomcat中的共享jar 6.0.20
- 22. 如何在Erlang中的多個erl之間共享記錄?
- 23. AngularJS - 如何在多個控制器中共享監視對象?
- 24. TestNG,Selenium如何在多個類中共享對象
- 25. Office-js:如何在多個主機中共享相同的CustomTab
- 26. 如何在多個項目中共享.java文件?
- 27. 如何在多個項目中共享JSP頁面?
- 28. 如何在android ndk中添加多個共享庫?
- 29. 如何讓多個應用在Android中共享遠程服務?
- 30. 如何在ASP.NET中的多個子域之間共享會話?
您好Strauberry,我可能有一個解決方案,將解決您的更改JAR很多問題。我有完全相同的情況! – Jonny