0

我有几个项目,在同一个应用程序中,结构粗略:

  • 父母
    • 耳朵
    • ejb
    • 坚持
    • 网络

我使用 Maven 来解决所有依赖关系,并将所有内容都很好地捆绑到一个 WAR 中,然后我将其部署在 JBoss 上。

我的问题是我的大部分模型都在 ejb 项目中,我需要这些 bean 在 Backing Bean 逻辑中(在 web 中)或在 JSF .xhtmls 中直接调用(也在 web 中)。

我搜索了互联网,包括堆栈溢出,并在 SPRING 以及如何导入/导出模块上找到了大量示例。好吧,因为我没有使用它,所以我不知道如何进一步进行。

那么如何从另一个项目中导入/使用这些 bean?

任何帮助表示赞赏!

4

1 回答 1

1

由于您使用的是您提到的技术堆栈,因此也可以选择 CDI。无论如何,如果您将所有内容都打包为 WAR,那么这只是运行时的一个模块。假设您有以下结构:

--- WAR
 |--- any *.xhtml files can live here (public)
 |--- WEB-INF
   |--- web.xml (optional)
   |--- persistence.xml (optional) - declare persistence unit used from WEB-INF/classes
   |--- beans.xml (optional) enable CDI annotation scanning for WEB-INF/classes
   |--- faces-config.xml (optional) enable JSF annotation scanning in WEB-INF/classes
   |--- *.xhtml files can live here (private - usually templates, ui:composition, etc.)
   |--- classes
     |--- com.example - put managed beans here, EJBs, JPA etities or just about any other *.class
   |---lib
     |--- jpa.jar
       |--- META-INF
         |--- persistence.xml - persistence unit used in this jar
       |--- com.example - JPA entities can live here, gets mapped to WEB-INF/classes at runtime
     |--- ejb.jar
       |--- META-INF
         |--- ejb-jar.xml (optional) but can declare resources here
       |--- com.example - ejbs can live here, gets mapped to /WEB-INF/classes at runtime
     |--- faces.jar
       |--- META-INF
         |--- faces-config.xml - enables scanning JSF specific annotations in this jar
       |--- resources - this gets mapped to the WAR root at runtime, .xhtml can live here
       |--- com.example - put your @ManagedBean s here and @EJB inject anything from ejb.jar, gets mapped to /WEB-INF/classes at runtime
     |--- cdi.jar
       |--- META-INF
         |--- beans.xml - marks this as CDI bean archive
       |--- com.example - CDI beans can live here, gets mapped to WEB-INF/classes at runtime

请注意,即使我在上面的结构中专门分离了 jpa.jar、ejb.jar、faces.jar 和 CDI.jar,也没有说你必须这样做——你可以随意混合和匹配。要点:

  1. 对于 WAR 类中的任何 jar ,在运行时WEB-INF/lib都会映射到/WEB-INF/classes
  2. beans.xml启用 CDI
  3. faces-config.xml启用 JSF 注释扫描
  4. ejb-jar.xml在任何地方都不需要,但您可以利用它
  5. web.xml可以住WEB-INF/,但不是必须的
  6. web-fragment.xml可以存在于其中META-INF任何 jar 的文件夹中WEB-INF/lib并合并到web.xml
  7. .xhtmlJSF 文件可以存在于WEB-INF/(私有)内的 Web 应用程序根目录(公共)和META-INF/resources任何 jar 内- 所有这些文件都被映射到 Web 应用程序根目录(即,如果它们在 jar 中,WEB-INF/lib它们可以在逻辑上最终在其中)WEB-INF/META-INF/resource/WEB-INF
  8. persistence.xml可以住在里面的任何罐子里WEB-INF或里面META-INFWEB-INF/lib

这应该只是覆盖它 - 让我知道是否有任何不清楚或可以添加。

于 2013-08-17T00:47:16.710 回答