在我的理论中,spring能够独立运行java应用程序。它说它有自己的嵌入式servlet容器,可以使用JNDI本身。
我以前构建了一个war文件( Spring,security,gradle构建),但是Spring引导组装jar文件,它运行在任何有JVM的机器上。
所以我的问题是,如果我开发了一个基于spring引导的web应用程序(包含JSP文件&用于查找数据源的JNDI ),尽管它有自己的嵌入式servlet容器和打包的jar文件来独立运行,但出于性能、稳定性、扩展等原因,我是否仍然需要将其打包为WAR文件并部署在WAR (Websphere Application Server)或servlet容器中呢?
发布于 2016-10-25 18:47:17
WAS是一个成熟的,而Spring只需要一个Servlet容器(Servlet是完整JEE的一部分)。
例如,Servlet容器是: Tomcat、Jetty,但也是。
Spring能够将完整的应用程序与Tomcat的代码一起打包到JAR中,这样这个jar包含Servlet容器和您的应用程序。
我是否需要一个额外的是性能,稳定性,扩展等?
WAS的主要特性是:支持EJB和CDI (Tomcat为此需要TomEE ),但是Spring不会使用它,因为它是它的一个依赖注入容器- WAS具有更多的监视特性,但这并不重要,因为Spring有致动器
@参见应用服务器和servlet容器之间的区别?以获得更多详细信息
发布于 2016-10-25 17:12:26
答案很简单:不。您不需要任何成熟的应用服务器,因为您提到的任何原因(为了性能、稳定性、扩展性)。你可以和猫做得很好
编辑
看起来您只使用了来自应用程序服务器的JNDI功能。在打包servlet容器和应用程序时,您真的需要JNDI吗?我不这样认为。那些日子早就过去了。
当您必须在不同的环境之间移动应用程序时,JNDI真的会发光:从开发到集成,再到测试到生产。如果将每个应用服务器配置为使用相同的JNDI名称,则可以在每个环境中拥有不同的数据库,而不必更改代码。您只需拿起WAR文件并将其放到新的环境中。
(如果仍然需要使用JNDI查找数据源,请参阅:https://stackoverflow.com/a/24944671/6785908)。
不,我仍然认为没有理由将您的应用程序打包为WAR,并将其部署到传统的应用服务器上。尽管如此,如果您有一些现有的基础设施,并且被迫部署到现有的WAS (或WebLogic或JBoss任何应用服务器)服务器上,那么我就休息一下:)。
https://stackoverflow.com/questions/40245797
复制相似问题