我正在设置一个新的多模块项目结构。现在有一个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
的战争答案 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项目。