0

我目前正在编译 Web 应用程序中使用的第三方库列表。该应用程序部署在 tomcat 中。我想知道哪些第三方罐子实际上必须或应该包含在发行版中。特别是,我目前想知道如何最好地使用 javax-libraries。例如,我假设 javax.annotation-3.1.1.jar 可以以某种标准化方式使用,例如,将其作为扩展下载,而无需我将其包含在我自己的软件的分发中。但是,我将它作为来自 jaxws-api 的传递依赖项包含在内,这是 Web 服务所需的,因此它包含在应用程序的 lib 目录中。我知道我可以使用 Extension-List 清单条目来使目标机器下载并安装此类 jar。然而,

所以,我有一些关于 3rd 方库的问题,如果有人能给我一些提示,我会很高兴:

使用第三方库的最佳做法是什么?

javax 库是否有一些最佳实践?

在不给安装应用程序的人带来很大负担的情况下,我可以而且应该避免重新分发吗?

4

1 回答 1

0

我不得不承认,我在这里没有理解“重新分配”的概念,也许你正在使用一些具体的应用程序服务器术语,所以我会在这里尝试提供一个通用的答案,假设你有一场战争。

WAR(代表 Web Archive)应该包括应用程序使用的所有第三方。这些位于 WEB-INF/lib 文件夹中。

现在,每个 Java EE 服务器都应该“理解”javax 库,因为它包含相关的接口。“javax”库通常提供接口,并且与这些接口一起使用的实现/代码由应用服务器开发人员提供。

例如对于 servlet 技术,Tomcat(或命名任何 Web 服务器)将在其内部库中包含 HttpServlet 抽象类,它将扫描您的战争并找到您在哪里实现/扩展它,这就是它实际识别您的 servlet 的方式。

现在,您不应该将 servlet-api jar 包含到您的战争中,因为它已经存在于应用程序服务器中。

如果你使用像 maven 这样的构建工具,它们允许构建你的战争,这样一些第三方将被用于编译,但不会被打包到战争中。

我不明白为什么安装应用程序如此困难 - 在最简单的情况下 - 你将战争投入到 Web 服务器中,仅此而已。

希望这可以帮助

于 2013-10-07T09:36:35.050 回答