Spring JBoss部署信息

Spring JBoss部署信息,spring,deployment,jboss,config,Spring,Deployment,Jboss,Config,更多标准实践问题: 将应用程序部署为EAR和WAR有什么区别吗?你怎么决定?(我知道WAR只是一个web应用程序,可能有也可能没有JavaEE功能,比如消息传递) 假设我有一个带有Hibernate(MySQL DB)的Spring MVC应用程序堆栈,它应该部署为War还是EAR 如果我不使用EJB,我们什么时候需要担心JBoss部署描述符。(仅限Spring MVC)。假设我也有JMS。我们是否需要配置/更新/创建任何其他与JBoss相关的配置文件 当我们打包应用程序EAR/WAR时,它包含

更多标准实践问题:

  • 将应用程序部署为EAR和WAR有什么区别吗?你怎么决定?(我知道WAR只是一个web应用程序,可能有也可能没有JavaEE功能,比如消息传递)
  • 假设我有一个带有Hibernate(MySQL DB)的Spring MVC应用程序堆栈,它应该部署为War还是EAR
  • 如果我不使用EJB,我们什么时候需要担心JBoss部署描述符。(仅限Spring MVC)。假设我也有JMS。我们是否需要配置/更新/创建任何其他与JBoss相关的配置文件
  • 当我们打包应用程序EAR/WAR时,它包含了我们应用程序所需的一切。是否存在这样一种情况:我们需要将一些config/xml文件保存在这个归档文件之外的指定JBoss文件夹中
  • 直接从Eclipse部署是常见的做法还是使用Ant等更好?优势/劣势
  • 显然,我是个新手:-)。试图理解这一点

  • 请点击此处:
  • 如果你读到前面的回答,你会猜这是“战争”
  • 需要部署描述符来管理JBoss的模块,如果没有任何冲突或不需要任何调整,则不需要任何部署描述符
  • 如果要向JBoss添加模块或配置数据源等,可能需要使用一些JBoss文件。有关更多信息,请阅读JBoss文档
  • 您可以在开发阶段从eclipse进行部署,但由于您的其他环境(鉴定、生产、测试等)应该与您的开发环境分开,并且它们不会安装任何eclipse,因此您应该习惯于从命令行管理服务器,并将war放在正确的目录中
  • 这是一个简短的回答,但我希望它会有所帮助

    阅读JBoss文档了解更多信息。

    1。 这并不总是一个容易的决定,但对于初学者和小项目来说,我认为这几乎总是一场战争。使用EAR的原因主要是将业务层与UI/Web层隔离开来。有关更多详细信息,请参见此问题:

    二,。 我可能弄错了,但我认为春天的人们通常更喜欢战争

    三,。 配置所谓的“受管理对象”和安全性主要需要JBoss(供应商)特定的部署描述符。有时,它们可以用于JavaEE规范未涵盖的额外功能(例如,为WAR设置web根)。受管对象通常是数据源(与数据库的连接)和JMS目的地(队列和主题)

    在传统的JavaEE方法中,必须尽可能远离代码来创建它们,这通常意味着系统管理员将使用某种GUI或管理控制台在目标内部创建它们。在此设置中,作为开发人员,您将与“未解决的依赖项”展开一场战争,然后系统管理员(或“部署人员”)将花费数天时间来确定这些未解决的依赖项应该是什么

    如果开发人员和部署人员之间的通信相对良好,那么WAR或EAR可能会与自述文件一起被抛出墙外,这至少可以让您了解需要哪些资源。根据组织的不同,开发团队可能无法获得关于如何解决这些“未解决的依赖项”的任何访问或反馈。例如,可能已经创建了最多5个连接的数据源,但如果某些代码确实表示有10个并行查询,则这可能是不够的。如果开发团队不知道确切的数据源配置,一些运行时问题和性能问题可能相对难以解决

    为了缓解这些问题,对于某些工件,一些供应商向开发人员提供创建那些“未解决的依赖项”的服务,而不是使用专有的部署描述符,这些描述符随后嵌入WAR或EAR中。对于简单的本地JMS目的地,在大多数情况下,这就是它的结束,但是对于数据源,还有一点更多。也就是说,必须有一种机制在不同阶段(如开发、测试、QA、生产等)的数据源之间切换。此外,在源代码中设置生产密码很少是一个好主意

    如果你有一个简单的应用程序,你想在本地试用,阶段和生产密码是没有关系的。如果你为一家(大型)公司部署,它就是

    在JavaEE6中,您可以使用标准描述符(web.xml、ejb-jar.xml或application.xml)定义数据源,在JavaEE7中,您可以对JMS目标执行相同的操作。目前还没有基于stage配置这些功能的标准方法,但JavaEE8有望解决这一问题(参见示例)。供应商对这些标准化方法并不普遍满意,他们的主要文档几乎总是可以扩展地告诉您如何使用他们的专有工具和描述符来做这些事情,如果您幸运的话,告诉您有一种标准化的方法(然后,有时会淡化这一点,或者说不建议在生产中使用它来吓唬你)

    四,。 主要参见第3条的答案。解决如何在阶段之间切换并将生产密码置于WAR/EAR之外的问题的一个选项是在AS中(在您的案例中,在JBoss中)完整定义所述数据源。在此设置中,每个AS安装都绑定到特定的服务器。如果需要更新、删除或添加新的数据源,您必须与您的操作团队(如果有)进行沟通。如上所述,根据您的组织,这可能是琐碎的,也可能是不可能的

    五,。
    开发时,您通常使用IDE进行部署。对于生产,您永远不会这样做。对于生产,您可以使用Ant(或Maven)进行构建,并通过Jenkins或Chef等工具进行部署。

    +1提供更好的文档供审阅。@Kevin Rave-通常,您会使用EAR部署多场战争。