如何创建两个javawebapps并将jar依赖项相互化&;其他文件?

如何创建两个javawebapps并将jar依赖项相互化&;其他文件?,java,Java,我们目前有一个web服务的web应用程序(名为ws-project)。它使用了另外两个项目: dao项目(hibernate) 核心项目(pojo) 我们正在使用maven和spring框架。(&eclipse) 我们希望有第二个web项目使用SpringMVC(&jsp)显示网页 问题是我们将有2个网络应用。 部署之后,每个webapp将在/lib中包含2个jar(dao-project.jar和core-project.jar)。它们中的每一个都有自己的数据源&调用的spring容器

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

  • dao项目(hibernate)
  • 核心项目(pojo)

我们正在使用maven和spring框架。(&eclipse)

我们希望有第二个web项目使用SpringMVC(&jsp)显示网页

问题是我们将有2个网络应用。 部署之后,每个webapp将在/lib中包含2个jar(dao-project.jar和core-project.jar)。它们中的每一个都有自己的数据源&调用的spring容器

因此,我们正考虑像往常一样,只使用一个Web应用程序来混合Web服务和网页

有没有什么解决方案可以使分离干净而没有这些缺点


提前感谢您的帮助,我真的很感激。

不幸的是,J2EE没有指定您描述的部署选项(然后将多个战争聚合到一个EAR中),将此留给应用程序服务器。然而,大多数应用服务器提供了某种共享公共库的机制。例如,在Tomcat上,您必须将这些库复制到$CATALINA_BASE/shared/lib中,但所有应用程序都可以看到它们。

这听起来像是个问题,但可能是因祸得福

迟早你将不得不修复一个web应用程序中的bug,其中一些bug可能需要升级JAR库。如果您使用相同的JAR库,那么您将被迫升级未损坏的web应用程序,并同时部署这两个应用程序。这种相互依赖最终会使部署变得非常困难(如果不是不可能的话),因此您可能会重新考虑将两个web应用绑定到同一个JAR文件

如果您仍然希望将两个web应用绑定到相同的JAR文件,那么在TOMCAT中,您可以将JAR文件放在TOMCAT/lib目录(而不是webapp/lib目录)中,这将使所有web应用(即使不使用库的应用)都可以使用它。我相信Tomcat的位置是$CATALINA_HOME/common/lib。看看Tomcat,注意“常用”部分

我知道不重用库似乎很浪费,但是重用它们会产生很多问题。例如,您确定该库是为多个应用程序同时使用而编写的吗?某些依赖于磁盘存储的配置文件或某些类型的单例模式的库可能会在web应用程序之间泄漏信息。请记住,在web应用程序中,通常不会有多个JVM运行,所有web应用程序都在同一JVM下运行

ws-project (war)  
 |   
 +--dao-project (jar)   
 +--core-project (jar)   
web-project (war)   
 |  
 +--dao-project (jar)  
 +--core-project (jar)