spring 启动是否需要 WAS(Websphere 应用程序服务器)?
Does spring boot needs a WAS (Websphere Application Server)?
在我的理论中 spring 启动能够 运行 java Web 应用程序独立运行。它说它有一个自己的嵌入式 servlet 容器并且可以使用 JNDI 本身。
我之前构建了一个war文件(spring-mvc,安全,gradle构建),但是Spring引导assemblejar文件和它在任何有 JVM 的机器上运行。
所以我的问题是,如果我制作了一个 spring 基于引导的 Web 应用程序(包含 JSP 文件和用于查找数据源的 JNDI),尽管它有自己的嵌入式 servlet 容器和打包的 jar 文件对于 运行 独立版,出于性能、稳定性、横向扩展等原因,我是否仍需要将其打包为 WAR 文件并将其部署在 WAS(Websphere 应用程序服务器)或 servlet 容器中?
简单的回答是否定的。出于您提到的任何原因(性能、稳定性、横向扩展),您不需要任何成熟的应用程序服务器。你可以用 tomcat
做的很好
编辑
看起来您只使用了应用程序服务器的 JNDI 功能。当您将 servlet 容器与您的应用程序打包在一起时,您真的需要 JNDI 吗?我不这么认为。那样的日子早已一去不复返了。
JNDI really shines when you have to move an application between
environments: development to integration to test to production. If you
configure each app server to use the same JNDI name, you can have
different databases in each environment and not have to change your
code. You just pick up the WAR file and drop it in the new
environment.
(如果您仍然需要使用 JNDI 来查找您的数据源,请参阅:)。
不,我仍然没有真正看到将您的应用程序打包为 WAR 并将其部署到传统应用程序服务器的理由。话虽这么说,如果您周围有一些现有的基础设施,并且您被迫部署到现有的 WAS(或 WebLogic 或 JBoss 任何应用程序服务器)服务器,那么我的情况就搁置了 :).
WAS 是一个成熟的 Java 企业应用服务器,另一方面,您 Spring 只需要一个 Servlet 容器(Servlet 是完整 JEE 的一部分)。
Servlet容器例如:Tomcat、Jetty,还有WAS。
Spring Boot 能够将完整的应用程序与 Tomcat 的代码一起打包在一个 JAR 中,这样这个 jar 就包含了 Servlet 容器和您的应用程序。
Do I need a additional WAS for performance, stability, scaling-out etc?
- 性能:否 - 当您 运行 一个 Spring-应用程序时,Tomcat 和 WAS 之间应该没有重要的性能差异。 (只有 Tomcat 本身需要更少的内存)
- 稳定性:Tomcat和WAS都是非常成熟的产品
- 扩展:您可以自己构建一个 Tomcat 的集群。
与 Tomcat 相比,WAS 的主要特点是:
- WAS 支持 EJB 和 CDI(Tomcat 为此需要 TomEE),但 Spring 不会使用它,因为它是它的一个依赖注入容器
- WAS 有更多的监控功能,但这并不重要,因为 Spring Boot 有 Actuator
@查看Difference between an application server and a servlet container?了解更多详情
在我的理论中 spring 启动能够 运行 java Web 应用程序独立运行。它说它有一个自己的嵌入式 servlet 容器并且可以使用 JNDI 本身。
我之前构建了一个war文件(spring-mvc,安全,gradle构建),但是Spring引导assemblejar文件和它在任何有 JVM 的机器上运行。
所以我的问题是,如果我制作了一个 spring 基于引导的 Web 应用程序(包含 JSP 文件和用于查找数据源的 JNDI),尽管它有自己的嵌入式 servlet 容器和打包的 jar 文件对于 运行 独立版,出于性能、稳定性、横向扩展等原因,我是否仍需要将其打包为 WAR 文件并将其部署在 WAS(Websphere 应用程序服务器)或 servlet 容器中?
简单的回答是否定的。出于您提到的任何原因(性能、稳定性、横向扩展),您不需要任何成熟的应用程序服务器。你可以用 tomcat
做的很好编辑
看起来您只使用了应用程序服务器的 JNDI 功能。当您将 servlet 容器与您的应用程序打包在一起时,您真的需要 JNDI 吗?我不这么认为。那样的日子早已一去不复返了。
JNDI really shines when you have to move an application between environments: development to integration to test to production. If you configure each app server to use the same JNDI name, you can have different databases in each environment and not have to change your code. You just pick up the WAR file and drop it in the new environment.
(如果您仍然需要使用 JNDI 来查找您的数据源,请参阅:)。
不,我仍然没有真正看到将您的应用程序打包为 WAR 并将其部署到传统应用程序服务器的理由。话虽这么说,如果您周围有一些现有的基础设施,并且您被迫部署到现有的 WAS(或 WebLogic 或 JBoss 任何应用程序服务器)服务器,那么我的情况就搁置了 :).
WAS 是一个成熟的 Java 企业应用服务器,另一方面,您 Spring 只需要一个 Servlet 容器(Servlet 是完整 JEE 的一部分)。
Servlet容器例如:Tomcat、Jetty,还有WAS。
Spring Boot 能够将完整的应用程序与 Tomcat 的代码一起打包在一个 JAR 中,这样这个 jar 就包含了 Servlet 容器和您的应用程序。
Do I need a additional WAS for performance, stability, scaling-out etc?
- 性能:否 - 当您 运行 一个 Spring-应用程序时,Tomcat 和 WAS 之间应该没有重要的性能差异。 (只有 Tomcat 本身需要更少的内存)
- 稳定性:Tomcat和WAS都是非常成熟的产品
- 扩展:您可以自己构建一个 Tomcat 的集群。
与 Tomcat 相比,WAS 的主要特点是: - WAS 支持 EJB 和 CDI(Tomcat 为此需要 TomEE),但 Spring 不会使用它,因为它是它的一个依赖注入容器 - WAS 有更多的监控功能,但这并不重要,因为 Spring Boot 有 Actuator
@查看Difference between an application server and a servlet container?了解更多详情