2

我正在建立一个新的多模块项目结构。现在有一个 ejb 和一个 ear 模块,我想为 RESTful Web 服务添加一个 Web 模块。什么是最好的方法?

应用程序看起来像这样(模块及其内容):

  • app(pom): 父 pom
    • core(ejb):ejb、休眠、DAO、实体、业务逻辑
    • ear(ear):创建可部署容器的模块

现在我想添加一个宁静的网络服务模块。

查看来自http://www.jboss.org/jbossas/downloads的 jboss-as-7 快速入门应用程序,总有一个war模块可以引导其余服务,而带有 jax-rs 注释的 bean 是 ejb 项目的一部分(就我而言core

  • app
    • ejb(包含带有 jax-rs 注释的服务 + bean)
    • ear
    • war(只包含一个web.xml

我对这种方法的问题是 ejb 模块包含服务和其余资源。把它们分开不是更好吗?或者这是要走的路?

否则:哪种方法会更好?

  • app
    • core
    • ear
    • rest(包含其余资源 bean 和的战争web.xml

或者

  • app
    • core
    • ear
    • rest
    • rest-resources(其余资源 bean 的单独容器)
    • rest-war(仅包含 的战争web.xml
4

2 回答 2

1

从 JEE6/JAX-RS 的角度来看,您需要 WAR 文件的唯一目的是实际上有一些东西可以交给应用程序服务器进行部署。它实际上可以不包含任何资源(使其成为有效存档所需的资源除外),只要您的类在类路径中的某处可用,您的应用程序仍然可以工作。因此,您可以根据自己的需要来捆绑这些类。

您将需要一个扩展 javax.ws.rs.core.Application 的类。此类用作标记/引导程序,以向应用程序服务器指示 Web 存档中有可用的 REST 资源需要加载。在大多数商店中,我都看到这个类被放置在 WAR 项目本身中。

如果您真的在寻找组织技巧,我建议您首先将所有 REST 资源类分组到他们自己的项目中。将资源类工作所需的任何项目添加为依赖项(例如您的 core 和 ear 项目)。将所有三个(rest、ear、core)添加为您的战争项目的依赖项。

然后在您完成实施的过程中根据需要细化模型。

于 2012-05-23T12:33:58.550 回答
1

这类项目有一个非常棒的 JBoss Maven Archetype。

1) 安装 maven 集成进入 Eclipse
2) 新建 -> 项目 -> Maven 项目
3) 单击下一步
4) 在 ee6 中的过滤器类型中
5) 在出现的选项中,使用组 ID:“org.jboss.spec. archetypes”和工件 ID:“jboss-javaee6-webapp-archetype”
6) 将推出一个结构精美的 Web 应用程序项目,其中 EAR 连接到 EJB 项目和 WAR 项目。

于 2012-05-23T13:44:13.467 回答