相比构建一个带有内置Web服务器的独立Java应用,然后在反向代理后运行它,构建一个小型Java Web应用程序以在Servlet容器(如Tomcat)中运行有哪些优点?
我已经使用Java玩了一年左右。我注意到启动Tomcat需要时间,并且由于类加载器问题,不总是能够进行热重载。从配置和RESTful设计的角度来看,Servlet API 对我来说似乎有些复杂(它并没有完全支持RESTful设计)。
另一方面,我注意到我的集成开发环境(IDE)可以以闪电般的速度编译和运行独立应用程序。配置Apache进行反向代理非常容易,而嵌入式Jetty似乎可以处理我能够投入它的一切。当我可以使用Restlet、Wicket等技术时,我就不需要Servlet了。因为应用程序未集成到庞大的应用服务器中,所以我能更好地了解它的工作原理,这使我感到很有力量。堆栈跟踪更短。下载大小更小。终端用户配置更容易。我猜测性能可能会更好,因为涉及的软件层数更少。
但是,我想起了那句话:听起来太美好的东西通常都是不真实的。所以我的问题是:为什么我不想让我的Web应用程序独立运行?Servlet容器为我和/或我的终端用户提供了什么我们真正需要但却不知道的东西?