Java 为什么更改jsp时tomcat不需要重新启动
我已经使用Java 为什么更改jsp时tomcat不需要重新启动,java,jsp,tomcat,servlets,Java,Jsp,Tomcat,Servlets,我已经使用JSP、Servlet很长一段时间了。我知道,每当我们在Servlet中更改任何内容时,我们都需要重新启动Tomcat服务器以获得更改。其中,与JSP更改一样,tomcat不需要重新启动 据我所知,JSP页面仅在编译时才会转换为Servlet。那么,毕竟它是一个Servlet。那么,在没有Tomcat重启的情况下,它是如何工作的呢 我知道JSP页面被编译的情况,比如服务器重启后的首次访问等。因为当Tomcat被要求执行JSP时,is会将JSP文件的修改日期与对应于此JSP的已编译类的修
JSP、Servlet
很长一段时间了。我知道,每当我们在Servlet
中更改任何内容时,我们都需要重新启动Tomcat服务器以获得更改。其中,与JSP更改一样,tomcat不需要重新启动
据我所知,JSP
页面仅在编译时才会转换为Servlet
。那么,毕竟它是一个Servlet
。那么,在没有Tomcat
重启的情况下,它是如何工作的呢
我知道JSP页面被编译的情况,比如服务器重启后的首次访问等。因为当Tomcat被要求执行JSP时,is会将JSP文件的修改日期与对应于此JSP的已编译类的修改时间进行比较,如果是最近的,它会在执行之前动态地重新编译 顺便说一句,这是一个应该在生产中关闭的选项,因为执行此检查需要时间
请参阅以了解详细信息。因为默认情况下tomcat是在开发模式下启动的,这意味着在检测到更改时重新编译JSP派生的servlet。这是一个很好的问题,JVM如何加载新类——可能tomcat类加载器是配置为这样做的 一些相关说明:
- 您可以关闭生产的“开发”选项
- 您还可以重新加载servlet—您必须在中使用JVM启动tomcat
Tomcat能够在运行时向Web应用程序类加载器添加/修改类路径。Tomcat将拥有自己的自定义类加载器实现,允许他们在运行时添加类路径
自定义类加载器如何工作?
一种方法是在修改Servlet/JSP时,为Servlet/JSP创建一个新的类加载器,并将应用程序类加载器作为父类加载器。新的类加载器将再次加载修改后的类
是的,但是JVM应该会以某种方式加载新类。默认情况下不会。我认为是tomcat的定制类加载器允许它。@:谢谢。。我知道它会将JSP文件的最后修改日期与已编译的类进行比较,以决定是否重新编译。当检测到更改时
-tomcat如何决定是否有更改?