在EAR的lib上使用WEB-INF/lib的原因是什么?

Mar*_*tus 3 ear war java-ee

我对我一直认为理所当然的事情有了第二个想法.即,在具有以下结构的EAR中:

EAR
 \-- boo-ejb.jar
 \-- foo-web.war
 |    \--WEB-INF
 |          \--lib
 \--lib
Run Code Online (Sandbox Code Playgroud)

..我想我理解正确的是WEB-INF/lib目录罐子只能由Web应用程序和EAR级别所需的lib罐子被需要ejb.jar为好.理由是以某种方式使依赖关系更清晰.但是,为什么不将所有内容转储到EAR级别的lib文件夹中?当然,如果存在某种冲突,我们希望深入了解和调查.这不是一个更清洁的解决方案,更不容易掩盖潜在的兼容性/依赖性不匹配问题吗?

Jac*_*ski 7

你是绝对正确的 - 它会更清晰,更不容易出现依赖性不匹配的错误.

但...

如果您不在EAR中分发Web应用程序,该怎么办?你会把libs放在哪里?您将如何在不同的EAR中分发Web应用程序,以便根据一组Web应用程序组合企业应用程序?

WEB-INF/lib也适用于只能包含资源的jar(不包含任何类).那么你会把面向Web的资源罐放在EAR级别的lib中吗?我不这么认为.

在EAR的lib上使用WEB-INF/lib可能有更多的理由,但上述两个/三个案例应该足以说服你重新思考管理库的策略.