【问题标题】:Dependency jar containing ejb 3.1 and jsf pages包含 ejb 3.1 和 jsf 页面的依赖项 jar
【发布时间】:2014-03-19 11:49:59
【问题描述】:

我有一个 web 应用程序项目,它现在正在发展为单独的 web 子模块,其中包含它们自己的 ejbs 和 jsf 网页。

项目结构将如下所示。

  • 父项目
  • 通用模块
  • 信用卡模块
  • 银行支付模块
  • 更多支付模块 ...
  • 战争模块

除通用模块外,每个模块都有自己的ejbs和jsf页面。

如果可能的话,我需要每个模块都成为一个独立的战争,并与战争模块建立一场大战争。

编辑

项目的当前结构

war module -- 
           --| persistenceunit |
           --| entities |
           --| ejbs |
           --| cdi managed beans |
           --| controllers |
           --| jsf-pages |
           --| resources |

不同的业务部门只是由包分开。现在需要能够分别对不同的业务单元进行版本控制,即每个不同的 mvn 项目。

要实现的结构:

Common module -- 
              --| persistenceunit |
              --| dao helpers |
              --| common ejb services |
              --| common managed beans |                  
              --| jsf-templates |
              --| common resources |
Creditcard module -- 
              --| related entities |
              --| ejb services |
              --| related managed beans |                  
              --| jsf-pages |
              --| specific resources |

其他业务模块也是如此,而且一个主战争/耳朵模块包含所有战争。

重要:是否可以共享持久性单元? cdi 是否可以跨模块工作(最后是单耳/战争)?

本质上,这个想法是根据业务需求而不是纯粹的技术层来模块化项目。

我应该如何使用 maven 实现这一点?

【问题讨论】:

    标签: java maven jsf-2 ejb-3.1 java-ee-7


    【解决方案1】:

    您也许可以使用 Maven Web 覆盖完成您想要的:

    http://maven.apache.org/plugins/maven-war-plugin/overlays.html

    它们让您让 Web 资源通过依赖项在项目中传播,类似于源文件和类路径资源如何通过 jar 文件传播并通过依赖项传播到 war 文件中。

    【讨论】:

    • 我也去看看
    • 嗨,叠加看起来很有趣,我试过了,但是一旦我在主战争中包含了 2 场战争,我所有的支持 bean 都没有被注入。我收到“目标可访问”错误
    • 如果我只在主战争中叠加战争,效果很好。
    • 是的,我个人并没有尝试过不止一场战争作为覆盖/依赖,所以我不能确定它是否/如何起作用。文档使它听起来像是可能的。如果问题是你的非主战争中的类没有进入你的主战争,你可能需要尝试将这些战争分成两个项目,一个只有类的 jar 项目和一个没有类的战争项目。然后,这些类可能会通过传递依赖项传播到您的主战争。
    • 这是一个常见依赖项的问题,我使用dependentWarExclude 配置参数进行了管理。
    【解决方案2】:

    您可以使用Apache Maven EAR Plugin 创建一个企业档案(.ear 文件):

    Java EE 应用程序在 Enterprise Archive (EAR) 中交付 文件,一个带有 .ear 扩展名的标准 Java 归档 (JAR) 文件。使用 EAR 文件和模块使得组装许多 使用某些相同组件的不同 Java EE 应用程序。不 需要额外的编码;这只是组装(或 打包)各种 Java EE 模块到 Java EE EAR 文件中。 (来源:Java EE 5 docs)

    使用包装ear创建一个新模块。 Use maven-ear-plugin,configure the modules 你想组装在一起。

    【讨论】:

    • 其他模块是什么?战争,jar 还是 ejb-jar ?我想在其中包含常见的 ejb 和常见的 jsf 页面。
    • 我会说 ejbs 将是一个 jar 并配置为一个 ejbModule。关于 Common jsf 页面我不确定,可能是另一场战争的罐子?
    • 一些模块将包含 ejb 以及 jsf 页面。他们呢? ejbModule (jar) 里面可以有 jsf 页面吗?如果是怎么办?
    • 通常,ejbModule 内部没有 jsf 页面。虽然,由于这些文件是档案,它们当然可能包含各种文件。请更新有关您当前如何构建和部署应用程序的问题。以及您想要实现的目标。一个可复制的例子会更容易帮助你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 2023-03-30
    • 1970-01-01
    • 2012-04-01
    相关资源
    最近更新 更多