Gar*_*ero 12 java osgi module web-applications java-ee
我为一家全国性公司工作,因此我们开发的软件规模很大.
我们的核心系统是基于Web的webservices.我们目前正在重新设计整个项目,并且是启动项目结构的时刻.
我们有7个网络模块,包括基于Struts2和的Web项目Spring 3.1.Webservice基于JAX-WS和的核心Spring 3.1
我的问题是为这样的项目设计项目结构和模块化的最佳实践是什么:
我们肯定会使用Maven,OSGi如果需要的话.我在考虑类似的事情
WebProject.war
|---Web.xml
|--- Libs
|
|--- Web Module1.jar
|--- Web Module2.jar
|--- Web Module3.jar
|--- Web Module4.jar
|--- Web Module5.jar
|--- Web Module6.jar
WebService.war
|---Web.xml
|--- Libs
|
|--- Service.jar
|--- Service2.jar
EJBProject.jar
|
|--- module.jar
|--- module2.jar
Run Code Online (Sandbox Code Playgroud)
这是我个人的想法,但我们正在寻找更好的模块化的东西,以便我们可以工作和部署,WebModule1.jar而不会影响其他模块和主要项目WebProject.war.同样,我们希望专业团队只拥有他们项目的代码,因此如果一个团队必须只Service2.jar在他们的工作中,IDE他们将只有代码Service2.jar和资源项目与其他项目已经编译.
谢谢
模块化的关键方面是您的模块尽可能少地了解它,以便它可以在许多不同的上下文中重用.只有在违反假设时才会出现错误,最小化假设是最大的错误杀手.OSGi提供了像μservices这样的工具,它们非常适合允许假设保持在本地.
您的布局看起来非常像一个Web项目,因为我们自己开发的大多数代码都应该独立于用于呈现它的技术.由于Web应用程序正迅速转向浏览器,所有这些技术很可能在不久的将来发生变化,浏览器再次成为胖客户端.即,如果您看到纯消息传递正在做什么,那么非常现代的REST接口已经感觉非常老式.所有这些波动性意味着您希望尽可能地使模块分离.
因此,我永远不会将任何域代码耦合到与耦合到Web技术的库相关联的任何内容.这些传递依赖会在(近)未来伤害你.构建小型的内聚解耦模块,然后将它们用作乐高积木来构建您的应用程序.
我强烈建议阅读Kirk Knoernschild的"Java应用程序架构:使用OSGi的示例模块化模式".你可以在迁移到OSGi之前模块化应用程序(如果你还没有它,我肯定会投入很好的测试覆盖率).
如果您正在使用servlet规范3.0,那么请查看使用Web片段.
就你所显示的结构而言,我会说不嵌套任何东西(除了web片段),WAR可以成为WAB(Web应用程序包 - 基本上是一个瘦的WAR).也尽可能地利用OSGi的μServices - 这就是乐趣开始的地方=)
像Karaf和Virgo这样的企业OSGi框架提供了大量的支持,而你跨越了JEE-OSGi的分界(Equinox和Felix一个人只有一点准系统).
| 归档时间: |
|
| 查看次数: |
4041 次 |
| 最近记录: |