首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个项目的共享项目

多个项目的共享项目
EN

Stack Overflow用户
提问于 2013-12-04 21:00:00
回答 2查看 487关注 0票数 0

我有3个不同的web应用程序(WAR)。

现在一些类\bean\ services在它们之间共享,

1)在不同的jar中共享beans \ services \ entities \ repositories (具有crud操作)是一种好的实践吗?或者每个共享项目都应该只包含pojos?

2)如果我与一些自动装配和spring beans共享一个jar,运行它的是哪个spring容器?它的根项目的容器?或者它有自己的容器?

3)在这个问题上的任何参考都会有所帮助

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-12-04 21:04:00

1)是的,这是一个很好的实践。将公共代码组合到单独的jar中,并在表示您的web应用程序的每个项目中依赖它。

2)你不能在不同的模块上共享一场战争,只有JAR……

票数 0
EN

Stack Overflow用户

发布于 2013-12-04 21:07:53

这是一个相当不清楚,你是如何提出共享代码。

共享代码的一种方法是将共享代码/项目构建为JAR,然后将其包含在需要它的每个WAR文件的WEB-INF/lib目录中。这没有固有的问题。每个webapp的类加载器都会加载它自己的类副本,并且每个webapp都有自己的静态特性,并且webapp之间不会相互干扰。这是“正常”的方式。

另一种方法是将JAR放入web容器的共享库目录中。这有问题:

  • 您在部署/重新部署方面存在潜在问题:

代码语言:javascript
复制
- A JAR in the shared lib can only be redeployed by restarting the container.
- You (typically) can't redeploy using the web container's management pages / interface.
- You have one more thing to remember to redeploy.
- What if different webapps require different versions of the JAR??

  • 通过对共享类进行静态操作,您会遇到潜在的泄漏问题。

代码语言:javascript
复制
- Information can leak from one webapp to another.
- Types can leak ... leading to "inexplicable" class-cast failures.
- You could exacerbate the "permgen leak" issue with hot redeploys.

将共享JAR放在共享库目录中的唯一好处是,通过在内存中只有一个共享库副本,可以潜在地减少代码占用。但通常情况下,节省下来的钱根本不值得这么麻烦。

1)在不同的jar中共享beans \ services \ entities \ repositories (具有crud操作)是一种好的做法吗?或者每个共享项目都应该只包含pojos?

我不认为这些有任何问题...假设您是通过JAR-in-a-WAR方法进行共享的。

2)如果我与一些自动装配和spring beans共享一个jar,运行它的是哪个spring容器?它的根项目的容器?或者它有自己的容器?

JAR-in-a-WAR中的Beans由WAR webapp的Spring容器管理。我不确定另一种方法..。但我怀疑这是一样的。(我不期望Spring连接机制关心bean类是来自webapp的类加载器,还是来自“库”目录的类加载器。)

3)任何在这个问题上遮蔽一些光线的参考都会有所帮助。

没什么特别的。但是类加载器的组织应该在web容器的文档集中进行描述。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20376084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档