Java Spring项目的容器

Java Spring项目的容器,java,spring,containers,Java,Spring,Containers,我想对运行“Spring应用程序”的容器持怀疑态度,我认为Spring框架提供的许多特性之一是在没有容器EE的情况下创建应用程序的可能性。在spring项目中使用这种容器(“WildFly”、“GlassFish”)正确吗?我的选择是错误的,但我愿意倾听更多的人 我看了一篇文章,作者用WildFly展示了Spring 4的功能,但我不同意,所以我想在这里就这个话题发表更多的意见。考虑到Spring Web和Web MVC,您通常会使用像Tomcat这样的轻量级容器,Jetty或任何其他servl

我想对运行“Spring应用程序”的容器持怀疑态度,我认为Spring框架提供的许多特性之一是在没有容器EE的情况下创建应用程序的可能性。在spring项目中使用这种容器(“WildFly”、“GlassFish”)正确吗?我的选择是错误的,但我愿意倾听更多的人


我看了一篇文章,作者用WildFly展示了Spring 4的功能,但我不同意,所以我想在这里就这个话题发表更多的意见。

考虑到Spring Web和Web MVC,您通常会使用像Tomcat这样的轻量级容器,Jetty或任何其他servlet容器-可能像Spring Boot那样嵌入

SpringWeb设计为在没有完整JEE容器的情况下工作,但也可以在其中部署


使用没有JEE的Spring,您可以对所使用的功能进行更多的控制。完整的appserver有一个捆绑的功能列表,您可以获得全部或全部。Spring为您提供了选择所需内容的功能,从而使应用程序更加纤薄。

首先,在软件开发中,主要是在这类主观问题中,说“某物”是错还是对有点棘手。和往常一样,这实际上取决于您需要什么以及您正在使用的EE容器

让我们以Widlfly为例。由于JBoss7(现在是Wildfly),我认为我们不能说JBoss是一个“重型”服务器,因为它只需几秒钟就可以启动,比早期版本快得多。虽然Wildfly确实提供了许多您可能不使用的服务,但说您获得“全部或全部”是不正确的,至少有两个原因:

  • 您可以禁用不需要的服务
  • Wildfly使用服务的延迟加载概念,这意味着它将只加载运行给定应用程序所需的服务
话虽如此,我们不能忘记Spring也使用了一些EE服务,如果您愿意的话。因此,如果您需要将Spring与JMS一起使用,例如,您仍然需要一个JMS容器。在这种情况下,您可以使用EE服务器而无需安装其他服务,或者您可以在Tomcat中启动JMS容器


除了EE特性之外,还有与服务器相关的特性问题,例如可配置性/可管理性(Web界面、CLI)、HA、可伸缩性。。。这在不同的服务器上确实有所不同,我认为Jboss 7/Widfly在这些方面做得很好。

是的,您可以使用Spring创建一个非EE容器。是的,您可以在EE应用服务器中使用Spring。这两个句子中有一个能回答你的问题吗?我不明白的是为什么要用它们?如今,EE contaner附带了许多功能,您并不总是在应用程序中使用这些功能,但是当您启动应用程序时,即使您不使用这些功能,所有功能都将被初始化,这是对生产环境资源的浪费。这是我认为使用Spring开发应用程序的优势之一,因为我有能力配置将要使用的内容。这是一个不同的问题。就我个人而言,我会使用它们,因为Spring的设计比pre-annotation-drive应用服务器更好。Spring现在不再那么有用了,因为新的注释驱动服务器从Spring中学到了很多东西。但这并不是一个真正的问题。除非你针对你的具体情况使用它。我认为答案是‘这取决于你在做什么’。如果你需要一些JEE组件,比如EJB,你需要一个‘容器’,但是如果你使用Spring进行直接的servlet编程,那么你真的不需要EE容器。我想这是一个相当“基于观点的”的问题“问题,没有更多关于目标用例的限制或精确性。Spring可以处理EE容器和轻量级容器,无论哪种容器最适合您的应用程序、托管基础设施、公司策略等。即使看到您的所有观点,仍然没有看到使用Spring应用程序处理此类容器的真正方法,我将使用您告诉“JMS”的示例,如果我们看到默认的实现,并由spring向RabbitMQ推荐,RabbitMQ已经完成并更新了新JMS特性的集成()。WildFly与HornetMQ进行了集成,其中不能忘记提到的是它有巨大的潜力,但它们的集成没有更新。这里不能不提到的另外两点是,我将成为这个容器的人质,所需功能的数量肯定会比tomcat或jetty更大。让我们考虑一下这样的情况:SpRIG.IO用4x2GB应用程序为其500万用户提供24×7的服务。()在您看来,使用WildFly模拟此环境所需的配置是什么?作为开发人员,我需要考虑应用程序生命周期的所有因素,而生产环境就是其中之一。也许我错了,因此我打开此主题以了解更多意见。1。我不明白你的意思。您发布的链接显示了对SpringJMS集成的改进,它与RabbitMQ/AMQP无关。它仍然假设存在JMS容器(我不确定RabbitMQ是否会这样做)。2.嗯……也许你走错方向了。我认为这与应用程序的结构和编码方式有关,而与部署的web/app服务器无关。