作为单独的maven模块休息

时间:2012-05-23 12:21:37

标签: java rest maven jboss

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

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

  • app(pom):父母pom
    • core(ejb):ejb,hibernate,DAOs,实体,业务逻辑
    • ear(ear):创建可部署容器的模块

现在我想添加一个安静的Web服务模块。

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的战争

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:1)

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

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