繁体   English   中英

如何创建两个java webapps并共享jar依赖项和其他文件?

[英]How to create Two java webapps and mutualize jar dependencies& others files?

我们目前有一个webservices的web应用程序(名为ws-project)。 它使用了另外两个项目:

  • dao-project(休眠)
  • 核心项目(pojo)

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.

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