Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么时候使用EAR是合适的,什么时候你的应用程序应该处于战争状态?_Java_Spring_Weblogic_War_Ear - Fatal编程技术网

Java 什么时候使用EAR是合适的,什么时候你的应用程序应该处于战争状态?

Java 什么时候使用EAR是合适的,什么时候你的应用程序应该处于战争状态?,java,spring,weblogic,war,ear,Java,Spring,Weblogic,War,Ear,我们有许多SpringWeb应用程序要在WebLogic服务器上开发,我们很好奇战争什么时候应该爆发,什么时候应该作为战争存在。偶尔,战争将需要访问通用逻辑罐,但我不明白为什么这些需要进入耳朵,因为它们可以被打包到战争中 据我所知,如果一个EAR中有几场战争,并且您需要修改其中一场战争,那么您需要重新部署整个EAR来更新服务器。这将导致所有的战争反弹。但是,如果他们不在耳边,我可以更新一场战争,它将是唯一反弹的战争 单独使用100个不同的WAR文件并使用打包的JAR和共享库(使用WebLogic

我们有许多SpringWeb应用程序要在WebLogic服务器上开发,我们很好奇战争什么时候应该爆发,什么时候应该作为战争存在。偶尔,战争将需要访问通用逻辑罐,但我不明白为什么这些需要进入耳朵,因为它们可以被打包到战争中

据我所知,如果一个EAR中有几场战争,并且您需要修改其中一场战争,那么您需要重新部署整个EAR来更新服务器。这将导致所有的战争反弹。但是,如果他们不在耳边,我可以更新一场战争,它将是唯一反弹的战争

单独使用100个不同的WAR文件并使用打包的JAR和共享库(使用WebLogic)有什么不对


感谢您的任何见解

如果您只有WAR文件,那么EAR的用处有限,只能作为WAR的部署容器。你可以通过这种方式在战争之间共享罐子来节省一点膨胀,但这本身并不是很有吸引力

然而,在处理使用WAR、EJB、JMS、JCA资源等的完整JavaEE/J2EE应用程序时,EAR是必不可少的。在EAR中,这些应用程序组件之间的交互和依赖关系更容易管理


但是,如果您使用Weblogic的目的只是一个WAR容器,那么您也可以使用一个普通的servlet容器,如Tomcat或Jetty,来实现Weblogic的所有功能。

我同意skaffman(通常)的几乎所有点评

如果您使用的是没有EJB的Spring,那么当然可以使用WAR文件。不需要我能看见的耳朵

然而,如果您的Spring应用程序使用消息驱动的POJO,我可以看到您仍然需要在WebLogic上部署WAR文件以利用JMS

如果您有EJB或JCA,可能需要EAR,但我不会说JMS要求EAR。我使用了JMS并在WebLogic上部署了一个WAR文件,它工作得很好


如果您决定使用Tomcat并在那里部署一个WAR,那么如果您使用ActiveMQ,您仍然可以保留JMS功能。

如果您遇到我的上一位雇主所遇到的情况,那么将多个WAR打包到EAR中的论点可能会很有说服力,在这种情况下,您有一组由多个WAR使用的公共库JAR,而这些罐子的数量是相当大的。在我们的特殊情况下,3场战争的总规模为124MB,每场战争都包含普通罐子。通过在包含JAR的EAR中定位JAR并将每个WAR的类路径配置为使用这些JAR,包含3次WAR的EAR的占用空间减少到40MB。我认为这是一个令人信服的理由。

< P>拥有多个共享库,而不是一个令人信服的理由去寻找一个耳朵,因为jar(或一组jar)总是可以部署在WebLogic上的“库”,因此所有的战争都可以共享它。不是吗?

仅仅部署战争实际上没有什么错,开发人员希望尽快完成任务。这意味着他们经常会承担技术债务,如果他们在一个值得尊敬的团队中,他们会清理债务

然而,这会带来一个问题,当您避免EAR的复杂性,并通过将jar添加到应用服务器来共享jar时会发生什么?在纯战争团队中更常见的是,将各种各样的应用程序复杂性转移到应用程序服务器上。这仅仅是因为它更容易实施,在他们经常被过度分配的时间表中。我一点也不责怪他们,但是现在我们有了一个新问题。无法使用标准应用程序服务器,必须进行系统端自定义。实际上,web应用程序正在整个系统中泛滥。维护应用程序服务器的人员现在还必须了解特定于应用程序的详细信息。。。在企业环境中,这是一个非常明显的问题

然后,开发人员可以承担系统责任,但他们仍然需要在截止日期前完成。他们不可避免地会在整个操作系统上流血,突然间,开发人员成了唯一可能的管理员。如果管理员不知道应用程序在系统端使用什么,他们很可能会导致重大问题。这些不清楚的线总是以手指指向两个方向、未知的系统状态和团队隔离而结束


那么他们必须用耳朵吗?不,我是一名系统工程师,所以我总是说他们可以像部署其他商业应用程序一样部署自己的应用程序服务器。在RPM内部,如果部署WAR与其他受支持的应用程序服务器类似,那么它们将获得WAR部署管道。如果没有,则RPM多功能一体机。。。一旦不允许团队将其成本外部化,耳朵就成了一个好主意

BEA WebLogic还是Oracle WebLogic?这是一台新服务器。Oracle WebLogic。非常感谢您的评论,谢谢。引用一些文档和遵循所描述的模式是很容易的,但从功能角度来说,这更有意义。就我个人而言,我感兴趣的是功能上的确切区别,而不是预期用途的文档化标准,任何人都可以很容易地找到与此相关的内容。使用spring,它大大简化了开发,而不必总是构建ear来利用EE风格的依赖注入。你知道有什么其他的故障或资源指出了功能上的差异吗?我想说的是,如果你使用Spring Boot,你不需要任何应用服务器或WAR/EAR,只需要一个JVM和一个可执行的fat JAR。我在6.5年前写下了这个答案;那时候发生了很多变化。