`

关于TomCat自动加载class问题

 
阅读更多

每次用tomcat的时候,每当我对类做了修改必须要重新启动tomcat才能使其生效。其实我们可以在tomcat里的server.xml小做修改即可实现当我们修改了类或其他文件时候自动重新加载tomcat。如下:

Java代码 复制代码 收藏代码
  1. <Context path="/struts2" docBase="G:\myEclipseWorkSpace\struts2\WebRoot"  debug="0"   reloadable="true"/>   
<Context path="/struts2" docBase="G:\myEclipseWorkSpace\struts2\WebRoot"  debug="0"   reloadable="true"/> 


path:指定访问该Web应用的URL入口。
docBase:指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于<Host>的appBase属性的相对路径,如果Web应用采用开放目录结构,则指定Web应用的根目录,如果Web应用是个war文件,则指定war文件的路径。
reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。

但是有的时候你可能会发现启动的时候报如下异常

Java代码 复制代码 收藏代码
  1. 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property '   
  2. debug' to '0' did not find a matching property.  
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property '
debug' to '0' did not find a matching property.



这是由于你使用的是tomcat6.0,由于它通过其他途径对debug="0"这个属性进行了实现,所以这里不能再有此属性。你只要将它去掉,就可以正常启动了。

tomcat6。0如下:

Java代码 复制代码 收藏代码
  1. <Context path="/struts2" docBase="G:\myEclipseWorkSpace\struts2\WebRoot" reloadable="true"/>   
<Context path="/struts2" docBase="G:\myEclipseWorkSpace\struts2\WebRoot" reloadable="true"/> 

不重启Tomcat有两种方式:热部署、热加载    热部署:容器状况在运行时重新部署整个项目。这类环境下一般整个内存会清空,重新加载,这类方式    有可能会造成sessin丢失等环境。tomcat 6确实可以热部署了,而且对话也没丢.    热加载:最好是在调试过程中使用,免患上整个项目加载,Debug标准样式支持热加载。容器状况在运行时重    新加载转变编译后的类。在这类环境下内存不会清空,sessin不会丢失,但容易造成内存溢出,或者找不到方    法。一般转变类的布局和模型就会有异常,在已经有的变量和方法中转变是不会出问题的(Eclipse、    MyEclipse8、JBuilder、IntelliJ IDEA…)。    常用的一定第二种:热加载了,设置如下!    在tomcat的conf中的server.xml中的host设置中添加<Context path="/test"    docBase="D:/develop/test"    debug="0" privileged="true" reloadable="true"/>    reloadable="true" !最重要    它内里有很多属性,意义如下:    1>path:指定拜候该web应用的URL进口;    2>docBase:指定web应用的文件路径,可以给定绝对路径,也可以给定相对于<Host>的appBase属性【默认    指向tomcat的webapps】的相对于径;要是Web应用是个war文件,则指定war文件的路径。    3>className:指定使成为事实Context组件的Java类的名字,这个Java类必须使成为事实org.apache.catalina.Context    接口,该属性的默认值为org.apache.catalina.StandardContext。    4>reloadable:要是这个属性设置为true,Tomcat服务器在运行状况下会监视在WEB-INF/classess和WEB-    INF/lib目次下的class文件的改动,以及监视web应用的WEB-INF/web.xml文件的改动。要是检测到的class    文件或者web.xml文件被更新,服务器会自动加载Web应用。该属性的默认值为false.在web应用的开发和调    试阶段,把reloadable设为true,可以方便对web应用的调试。在web应用正式发布阶段,把reloadable设为    false,可以减低tomcat的运行负荷,提高Tomcat的运行性能。    5>cachingAllowed:要是为true,标示允许启用静态资源的缓存。使用缓存能提高拜候静态资源的效率。    tomcat把那一些时常被客户端拜候的静态资源(如:HTML文档、图片文件和声响文件等)放在缓存中,当客户再    次拜候有关静态资源时,Tomcat只需直接从缓存中读取相关数据,无须反复读取文件系统中的文件。该属    性的默认值为true.    6>cacheMaxSize:设定静态资源的缓存的最大容量,以K为单元。要是,要是该属性为100,表示100K,默认    为10240(即10M)。    7>workDir:指定web应用的工作目次。Tomcat在运行时会把与这个web应用相关的临应试文章件放在此目次下。    8>uppackWar:要是此项设为true,表示将把web应用的war文件睁开为开放目次布局后再运行。要是设为    false,则直接运行war文件。该属性的默认值为true。    同志们,使用tomcat6.0的注意了啊。当你使用我的方法设置tomcat后,你的myeclipse报如下错误时,不要惊慌,这是正确的,且听我解释。    console报错:    警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ' debug' to '0' did not find a matching property. 这是由于你使用的是tomcat6.0,由于它路程经过过程其他途径对debug="0"这个属性进行了使成为事实,所以这搭不能再有此属性。你只要将它去掉,就能够没事了启动了。 也就是说去掉debug="0“,万事OK,呵呵。 

 

分享到:
评论

相关推荐

    tomcat类加载器

    通常,开发者希望在不重启服务器的情况下更新代码,这时DevLoader可能会有热部署功能,即在代码更改后,能自动或手动重新加载修改过的类,而无需停止和重新启动Tomcat服务。这大大提高了开发效率。 类加载器在...

    实现tomcat热更新class文件.docx

    为了解决这个问题,可以配置Tomcat实现热更新class文件,使得修改后的Java类在不重启服务器的情况下就能立即生效。下面将详细介绍如何实现这一功能。 首先,我们需要理解Tomcat的工作原理。当一个Web应用被部署到...

    编译class不用重启tomcat

    标题“编译class不用重启tomcat”涉及到的是Java开发中的热部署技术,它允许开发者在不重启应用服务器(如Tomcat)的情况下,实时更新代码并看到变化的效果,从而极大地提高了开发效率。这篇博客可能介绍了如何使用...

    Tomcat热加载Jrebel

    最后,启动Tomcat,Jrebel就会自动监测代码变动并实现热加载。 4. **Jrebel优势**:除了提高开发效率,Jrebel还能减少由于频繁重启导致的内存泄漏风险,因为它避免了长期运行的应用实例被反复创建和销毁。此外,...

    tomcat 自动发布

    1. **兼容性问题**:不是所有的Tomcat版本都支持自动发布功能。通常情况下,Tomcat 7及以上版本才提供了较为完善的自动发布支持。 2. **性能考量**:虽然自动发布极大地提高了开发效率,但在生产环境中应谨慎使用,...

    java热加载Class文件.zip

    Java热加载Class文件技术是一种在不重启应用服务器的情况下更新或替换正在运行的Java类的方法,这对于开发者来说是一项非常实用的功能,因为它极大地提高了开发效率。在传统的开发过程中,修改代码后通常需要停止、...

    java class reload

    - Tomcat在开发模式下,可以通过设置`reloadable=true`在`conf/server.xml`中的`Context`元素内,启用类的热重载。但这仅适用于源代码改变后,重新编译并部署的 `.class` 文件。 4. **JMX(Java Management ...

    tomcat6异常问题

    7. **使用隔离的类加载器**:通过设置不同的类加载策略,例如Web应用的`WebappClassLoader`,可以避免不同应用之间的jar冲突。 8. **社区支持**:在Apache Tomcat的官方论坛或Stack Overflow等技术社区提问,获取...

    Web服务启动时自动加载Servlet,并读取数据库内容

    在Web服务启动时自动加载Servlet是一种常见的优化策略,目的是在应用程序启动时就准备好Servlet实例,以便快速响应用户请求。本例中,我们将讨论如何配置Web服务以在启动时加载Servlet,并利用Spring框架来读取和...

    Spring+mvc+mybatis Mapper xml自动加载

    "Spring+mvc+mybatis Mapper xml自动加载"这个主题聚焦于如何在开发过程中优化配置,使得改动Mapper XML文件后,无需重启Tomcat服务器,就可以立即生效,从而提高开发效率。 Spring MVC是Spring框架的一部分,它...

    quartz 随tomcat启动执行一次

    ### 关于 Quartz 随 Tomcat 启动执行一次的知识点 #### 1. Quartz 概述 Quartz 是一个开源的作业调度框架,能够触发在指定时间执行的任务(也称为作业)。它提供了丰富的调度器功能,如支持复杂的循环调度、支持...

    Struts2在Tomcat容器中的加载过程

    理解Struts2在Tomcat中的加载过程有助于我们更好地进行Web应用开发和故障排查。 首先,让我们深入了解一下Struts2的核心组件: 1. **Filter Dispatcher**:Struts2的核心是`FilterDispatcher`,它是一个Servlet...

    tomcat启动时,在后台自动执行一线程

    在Tomcat中,我们可以通过编写一个Servlet类并将其配置在web.xml文件中,使得在Tomcat服务器启动时自动加载并初始化这个Servlet。 要实现在Tomcat启动时自动执行的Servlet,我们需要在Servlet的`init()`方法中添加...

    cesium跨域加载问题

    然而,当使用Cesium进行3D地球渲染时,我们可能需要加载来自不同源的数据,如瓦片、模型、纹理等,这就涉及到跨域问题。本篇文章将详细介绍如何解决Cesium在使用Tomcat服务器时的跨域问题。 首先,我们需要理解...

    Tomcat7 负载Jar包

    在Tomcat7中,JAR包的加载是通过Classloading机制来实现的。Classloading是Java运行时环境的一部分,负责查找、加载和初始化类。在Tomcat中,这个过程涉及到`WEB-INF/lib`目录下的所有JAR文件。每个Web应用都有自己...

    <jsp:plugin>动作时,使用lomboz+Eclipse中编写程序,浏览器一直报 找不到.class文件

    通常,`WEB-INF/classes`目录用于存放编译后的JavaBean的`.class`文件,而这些文件可以通过类加载器自动加载。但当尝试加载Applet时,由于浏览器直接请求Applet的`.class`文件,它不会查找`WEB-INF`目录,导致找不到...

    springMVC样例、jreloader实现tomcat热部署

    jreloader 是一款针对Tomcat的热部署工具,它可以监控应用中Java类文件的变化,并在检测到变化时自动重新加载,从而避免了每次修改代码后都需要手动重启服务器的繁琐步骤。这对于开发者来说,极大地提高了开发效率。...

    详解tomcat热部署和热加载的方法

    热加载则是指在不重启服务器的前提下,Tomcat监听到相关class文件或者配置文件发生变化,并且仅加载变化的文件,不会影响到其他的组件和资源,也不会清除会话数据,从而实现无中断的实时更新。 实现热部署和热加载...

    tomcat支持跨域jar.zip

    3. **使用jar文件**:压缩包中的"tomcat跨域jar"可能是包含CORS Filter实现的JAR文件,用于在Tomcat启动时自动加载并启用跨域支持。你需要将这个JAR文件放入Tomcat的`lib`目录,确保服务器启动时能够识别并加载。 4...

Global site tag (gtag.js) - Google Analytics