繁体   English   中英

坛子的再分配

[英]Redistribution of jars

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

因此,我对第三方库有一些疑问,如果有人可以给我一些提示,我将非常高兴:

使用第三方库的最佳实践是什么?

javax-libraries是否有一些最佳实践?

我可以并且应该避免重新分配而不会给安装应用程序的人造成很大的负担吗?

我不得不承认,我在这里不了解“重新分配”的概念,也许您正在使用一些具体的应用程序服务器术语,所以假设您有战争,我将尝试在此处提供一个常见的答案。

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

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

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

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

如果您使用的是诸如Maven之类的构建工具,它们将允许您构建战争,以便一些第三方将用于编译,但不会打包到战争中。

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

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM