Java 用JSP的类文件而不是JSP本身来发布WAR是否更好?

Java 用JSP的类文件而不是JSP本身来发布WAR是否更好?,java,jsp,jakarta-ee,deployment,architecture,Java,Jsp,Jakarta Ee,Deployment,Architecture,如果我们可以让Tomcat/Jasper使用ANT任务编译JSP,那么将预编译的JSP作为类文件而不是JSP本身来发布WAR不是更好吗 这样,我们就不会被Weblogic/webherejsp编译问题所束缚。他们只会得到“类”文件 我认为这需要以某种方式关闭“jsp”servlet。必须启用Spring/Struts Servlet才能处理“jsp”扩展 你觉得怎么样?在其他生产环境中,最常见的是什么呢?JSP的编译有以下优点 您确信它可以被编译,也就是说,在运行时没有意外 当用户第一次到达J

如果我们可以让Tomcat/Jasper使用ANT任务编译JSP,那么将预编译的JSP作为类文件而不是JSP本身来发布WAR不是更好吗

这样,我们就不会被Weblogic/webherejsp编译问题所束缚。他们只会得到“类”文件

我认为这需要以某种方式关闭“jsp”servlet。必须启用Spring/Struts Servlet才能处理“jsp”扩展


你觉得怎么样?在其他生产环境中,最常见的是什么呢?

JSP的编译有以下优点

  • 您确信它可以被编译,也就是说,在运行时没有意外
  • 当用户第一次到达JSP时,可以节省一些时间
我认为第一个优势很重要,第二个优势不那么重要。我个人并不关心第一个也是唯一的第一个用户是否会在编译jsp时再等待一两秒钟。但是我非常关心now用户在使用我的应用程序时不会出现编译错误


我认为在构建过程中编译JSP只是为了验证,而不是将生成的
.class
文件打包到应用程序中就足够了。但是分发
.class
文件也不错

JSP的编译有以下优点

  • 您确信它可以被编译,也就是说,在运行时没有意外
  • 当用户第一次到达JSP时,可以节省一些时间
我认为第一个优势很重要,第二个优势不那么重要。我个人并不关心第一个也是唯一的第一个用户是否会在编译jsp时再等待一两秒钟。但是我非常关心now用户在使用我的应用程序时不会出现编译错误


我认为在构建过程中编译JSP只是为了验证,而不是将生成的
.class
文件打包到应用程序中就足够了。但是分发
.class
文件也不错

我通常会说不,这并不好。我认为这太麻烦了,只需将ear/war打包并发货


如果您的JSP不是在生产环境中编译,而是在本地或QA环境中编译,那么您还有其他问题需要解决。

我通常会说不,这并不好。我认为这太麻烦了,只需将ear/war打包并发货


如果您的JSP不是在生产环境中编译,而是在本地或QA环境中编译,那么您还需要解决其他问题。

编译的JSP不能跨容器移植。它们扩展特定于运行时的类。您可以尝试嵌入自己的JSP实现,但这是另一个问题。

编译的JSP不能跨容器移植。它们扩展特定于运行时的类。您总是可以尝试嵌入自己的JSP实现,但这是另一个问题。

在过去,我看到过一个问题,即特定的Websphere无法编译JSP,因为存在一些标记库问题。我们真的无法保护自己不受这些无法预测的事情的影响。现在,人们都在期待对Caucho、resin等的支持。我认为目前的问题与JSPAPI 1.x或2.x的向后兼容性有关。这是一个我们从来没有担心过的jar,因为Weblogic只是给了我们这个jar。如果您有编译问题,是由于对Caucho、resin或向后兼容性问题的支持等随机因素造成的,为什么您不希望这些问题也会出现运行时错误呢?我知道有时候在编译时需要一些在运行时不一定需要的库,但在这些情况下我仍然会遇到问题。如果我使用Jasper生成类文件,然后在我的WEB-INF/lib中提供Jasper Jar,就不会有任何运行时问题。不到目前为止,我认为JSP处理是阻止我确定应用程序是否将在任何随机服务器上运行的唯一因素。这就是我考虑这种方法的原因。使用这种方法,我所需要的只是来自webserver的Servlet2.5,我会很好的。不一定。你必须确保所有的图书馆都与你同行。一旦你编译了一个类,没有什么可以保证你需要的所有lib都存在,直到它运行。在过去,我看到过一个问题,某个特定的Websphere由于一些taglib问题而无法编译JSP。我们真的无法保护自己不受这些无法预测的事情的影响。现在,人们都在期待对Caucho、resin等的支持。我认为目前的问题与JSPAPI 1.x或2.x的向后兼容性有关。这是一个我们从来没有担心过的jar,因为Weblogic只是给了我们这个jar。如果您有编译问题,是由于对Caucho、resin或向后兼容性问题的支持等随机因素造成的,为什么您不希望这些问题也会出现运行时错误呢?我知道有时候在编译时需要一些在运行时不一定需要的库,但在这些情况下我仍然会遇到问题。如果我使用Jasper生成类文件,然后在我的WEB-INF/lib中提供Jasper Jar,就不会有任何运行时问题。不到目前为止,我认为JSP处理是阻止我确定应用程序是否将在任何随机服务器上运行的唯一因素。这就是我考虑这种方法的原因。使用这种方法,我所需要的只是来自webserver的Servlet2.5,我会很好的。不一定。你必须确保所有的图书馆都与你同行。一旦你编译了一个类,在它运行之前,没有任何东西可以保证你需要的所有lib都存在?如果我使用Jasper生成类文件,然后在WEB-INF/lib中提供Jasper Jar,那么就不会有任何运行时问题。没有?可能没有。但是,正如我所提到的,您正在嵌入JSP实现。C