【问题标题】:Basic question complicated solution - Tomcat to JBoss基本问题复杂解决方案——Tomcat to JBoss
【发布时间】:2011-09-27 00:23:30
【问题描述】:

为什么在我的 web-inf/lib 目录中存在 tld 文件的 JSTL jar 不能被 tomcat 很好地读取,但当我迁移到 jBoss 5 时却不能?

是类加载器的问题吗?

我尝试研究,但没有明确的答案。我阅读了一篇与类加载器相关的大型文章,但不确定它如何实际应用于我的应用程序。

任何帮助将不胜感激。

提前致谢 阿西夫

【问题讨论】:

    标签: jstl classloader jboss5.x


    【解决方案1】:

    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 的 webapp 都可以使用 JSTL,而无需在 /WEB-INF/lib 中包含 JAR。

    【讨论】:

    • 现在这样做之后我仍然有同样的问题java.sun.com/jsp/jstl/core 无法在 web.xml 或使用此应用程序部署的 jar 文件中解决。但是,当我有一个具有 1 个 JSP 的新 web 应用程序时在 WEB-INF/lib 中有一个 JSTL 调用并且没有 JSTL jar,这就像一个魅力。但是对于我从 tomcat 移动的应用程序,相同的解决方案失败了。那是一个 SPRING+TILES 应用程序,其中 tld 文件夹中存在一些自定义 tld 文件以及 web.xml 中的相应条目。我尝试删除自定义 tld 和条目,但错误没有改变。有任何建议吗?感谢您的时间。
    • 另外,当我从失败的应用程序(即我创建的新应用程序)复制所有 jar 文件时,新应用程序仍然有效。
    • 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 的解决方法:stackoverflow.com/questions/24262223/…
    猜你喜欢
    • 2023-02-21
    • 1970-01-01
    • 2020-11-13
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多