【问题标题】:Updating Tomcat LIb Folder更新 Tomcat LIb 文件夹
【发布时间】:2012-11-30 15:18:02
【问题描述】:

我有一个使用 Jersey Plugin 开发并部署在 Tomact 7 上的应用程序。 我必须将项目中使用的所有 jar 导出到 Tomact 的 lib/ 文件夹中……但我不想…… 是否可以在不将 jar 导出到 Tomcat lib 文件夹的情况下部署我的应用程序。如果是,那么如何?

https://t1.ap01.aws.af.cm/rest/person

这是我的应用程序链接,如果未导出 lib/,则会出现以下错误:

HTTP Status 404 - Servlet Jersey REST Service is not available

type Status report

message Servlet Jersey REST Service is not available

description The requested resource (Servlet Jersey REST Service is not available) is not available.

Apache Tomcat/6.0.35

【问题讨论】:

    标签: java tomcat jersey


    【解决方案1】:

    无论您使用 ant 还是 Maven 打包它们,您总是需要 lib 文件夹中的所需 jar - 您始终需要 lib 文件夹中的 jar。您看到的错误是应用程序找不到 Jersey jars。

    罐子建成后应该是战争的一部分。

    【讨论】:

    • 您说“jar 应该是 WAR 的一部分” - Preetam 说“我必须将项目中使用的所有 jar 导出到 Tomcat 的 lib 文件夹”。这是一个显着的区别!这些库实际上可以打包到 WAR 中,还是需要添加到 Tomcat 类路径中?
    • 一般来说,我的理解是将库打包到战争而不是Tomcat类路径中要好得多。这样做的原因是您可以通过将它们放入 Tomcat 类路径中来创建类加载问题。虽然如果这不合适,我很乐意在这里提供替代方案:)。
    • 我非常同意将东西放在 WAR 中更好,原因有很多。但是,我不知道在这种情况下这是否可能。有时某些库必须位于容器类路径中。通常,实现加载器位于容器类路径上的 API 实现,因此无法看到从应用程序类路径加载的类。 XML 解析器是一个经典的例子,我看到 JAX-WS 客户端库也有同样的问题。您不能只将它们放在 WAR 中,它们必须放在容器的 lib 目录中。很遗憾。
    • 幸运的是,我从来没有遇到过与必须进入容器库的库相关的问题!我认为该文件夹的最初目的是包含“共享”库(由超过 1 个 Web 应用程序使用),有趣的是,每个版本的 Tomcat 他们都删除并重构了这些文件夹(有 common/lib 和 shared/ lib...现在只有 lib)
    • 我总是觉得在不同的 Web 应用程序之间“共享”库有点危险,就好像一个应用程序突然使用了不同版本的库,你必须重构然后将它包含在 .war 类路径中。用一句话来说,磁盘空间很便宜——我宁愿没有依赖,只在两个war文件中拥有相同的库。
    猜你喜欢
    • 2016-01-06
    • 2020-02-10
    • 2011-08-27
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 2017-02-25
    • 2012-04-11
    • 2021-03-01
    相关资源
    最近更新 更多