[英]How to create Two java webapps and mutualize jar dependencies& others files?
我们目前有一个webservices的web应用程序(名为ws-project)。 它使用了另外两个项目:
ws-project (war)
|
+--dao-project (jar)
+--core-project (jar)
我们正在使用maven和spring框架。 (&eclipse)
我们希望有第二个使用spring-mvc(&jsp)显示网页的Web项目
web-project (war)
|
+--dao-project (jar)
+--core-project (jar)
问题是我们将有2个网络应用程序。 在部署之后,每个webapp将在/ lib中包含2个jar(dao-project.jar和core-project.jar)。 他们每个人都会调用自己的数据源和弹簧容器。
所以我们通常会这样做,只需要一个混合webservices和webpages的webapp。
有没有这些缺点的清洁分离的任何解决方案?
在此先感谢您的帮助,我真的很感激。
遗憾的是,J2EE没有指定您描述的部署选项(除了将多个战争聚合到EAR中),而是将其留给应用服务器。 但是,大多数应用程序服务器都提供了某种共享公共库的机制。 例如,在Tomcat上,您必须将这些库复制到类似$ CATALINA_BASE / shared / lib的内容中,但它们将对所有应用程序可见。
这听起来像是一个问题,但它可以是一种伪装的祝福。
迟早你将不得不修复一个Web应用程序中的错误,其中一些错误可能需要升级JAR库。 如果您使用相同的JAR库,那么您将被迫升级未损坏的Web应用程序并同时部署它们。 这种相互依赖性最终使部署非常困难(如果不是不可能),因此您可能会重新考虑将两个Web应用程序绑定到同一个JAR文件。
如果您仍想将两个Web应用程序绑定到相同的JAR文件,那么在TOMCAT中,您可以将jar文件放在TOMCAT / lib目录(而不是webapp / lib目录)中,这将使所有Web应用程序都可用(即使是那些不要使用图书馆。 我相信Tomcat的位置是$ CATALINA_HOME / common / lib。 看看Tomcat 类加载器文档 ,注意“常见”部分。
我知道不重用库似乎很浪费,但重用它们可能会产生很多问题。 例如,您确定要编写的库是否可以同时由多个应用程序使用? 某些依赖磁盘存储配置文件或某些类型的Singleton模式的库可能会在Web应用程序之间泄漏信息。 请记住,在Web应用程序中,您通常不会运行多个JVM,所有Web应用程序都在同一JVM下运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.