2011-09-27 33 views
0

爲什麼不能在我的web-inf/lib目錄中存在tld文件的JSTL罐子被tomcat很好地讀取,但是當我移動到jBoss 5時不能正常讀取?基本問題複雜的解決方案 - Tomcat到JBoss

這是一個類加載器的問題?

我試過研究,但沒有明確的答案。我讀了一篇大型的類加載器相關文章,但並不確定這對我的應用程序實際上如何適用。

任何幫助,將不勝感激。

預先感謝 阿西

回答

2

Tomcat是一個簡單的JSP/Servlet容器附帶的JSP和只的Servlet API的。 JBoss是一個更加完備的Java EE應用服務器,幾乎囊括了整個Java EE API,包括JSTL。

當您將JSTL與您自己的webapp一起發佈時,其API/impl版本將與JBoss已經使用的版本衝突的機會很大。 JBoss會加載它自己的JSTL API(jstl.jar),但是webapp會加載JSTL impl(standard.jar)。您應該從Web應用程序中移除JSTL JAR並使用JBoss。爲了讓JSTL爲Tomcat上的相同webapp工作,您還可以將JAR添加到Tomcat自己的/lib文件夾中。通過這種方式,每個部署到Tomcat的Web應用程序都將能夠使用JSTL,而無需在/WEB-INF/lib中包含JAR。

+0

現在做這件事後,我仍然有同樣的問題http://java.sun.com/jsp/jstl/core不能解決在web.xml或與此應用程序部署的jar文件。但是,當我有一個新的Web應用程序有一個JSP,它具有JSTL調用,並且WEB-INF/lib中沒有JSTL jar,並且這種工作就像一個魅力。但對於我從tomcat移動的應用程序,相同的解決方案失敗。那是一個SPRING + TILES應用程序,其中一些自定義tld文件存在於tld文件夾和web.xml中的相應條目中。我嘗試刪除自定義tld和條目,並且錯誤不會改變。任何建議?感謝您的時間。 – Mustafa

+0

此外,當我從應用程序,無法工作的應用程序,即我創建的新應用程序複製所有罐子,新的應用程序仍然工作。 – Mustafa

+0

FWIW:'find /c/_/jboss-eap-6.1 -name * jstl * .jar'產生'/c/_/jboss-eap-6.1/modules/system/layers/base/javax/servlet/jstl/ api/main/jboss jstl-api_1.2_spec-1.0.3.Final.jar'。這包含的實現也有'\ org \ apache \ taglibs \ standard'樹(其名稱中的api有點令人困惑)。仍然要求1.2.1的方法:http://stackoverflow.com/questions/24262223/recommended-way-for-adding-jslt-1-2-1-in-a-maven-project –

相關問題