`

运行期在WebRoot下创建目录会导致tomcat重新加载应用

阅读更多

目前维护的一个系统很是奇怪,必须将servers的publishing选项设置为never publish automatically,否则一登录系统tomcat立马重新加载应用,但是更改设置之后也不爽,对代码作出的修改不能立即生效了。真可谓是不想让你重启吧你非要重启,想让你重启吧还要点击一下publish to the server,令我郁闷之极。

 

光郁闷不行,得想办法解决啊,于是乎,开始断点调试,我看到底是哪个惹的祸。最后,定位到一块在web根目录下创建目录的操作代码段,只要执行完那句,立马让tomcat重新加载,非常好使。

 

我暂时想到的办法是,要么把这个目录移到webroot的外部,要么把创建目录改为创建不同名的文件,要么不改了顶多手工重启tomcat吧。

 

我非常好奇的是,除此之外还有什么别的办法呢,望遇到过此类问题的同路人能够指点迷津。

 

附上tomcat自动重新加载应用的控制台输出

2009-9-4 14:38:22 org.apache.catalina.core.StandardContext reload
信息: Reloading this Context has started
2009-9-4 14:38:25 org.apache.catalina.loader.WebappClassLoader loadClass
信息: Illegal access: this web application instance has been stopped already.  Could not load com.mysql.jdbc.profiler.ProfilerEventHandlerFactory.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1273)
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
 at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
 at com.mysql.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:4315)
 at com.mysql.jdbc.ConnectionImpl.close(ConnectionImpl.java:1461)
 at com.ibatis.common.jdbc.SimpleDataSource.forceCloseAll(SimpleDataSource.java:507)
 at com.ibatis.common.jdbc.SimpleDataSource.finalize(SimpleDataSource.java:738)
 at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
 at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
 at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
 at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)

 

3
1
分享到:
评论
2 楼 fangwei 2009-09-08  
ansjsun 写道
你可以修改conf/server.xml  
  配置  
  <context   path=""   debug="0"   docbase=""   reloadable="true">  
  reloadable="true"就表示tomcat在有变化时会自动加载,但他会浪费服务器资源 

谢谢,eclipse中tomcat默认的部署方式就是reloadable="true",我是想让它在发现诸如java,jsp,xml,property等文件的改动后自动重加载,但是不希望在我创建一个目录时重加载
1 楼 ansjsun 2009-09-08  
你可以修改conf/server.xml  
  配置  
  <context   path=""   debug="0"   docbase=""   reloadable="true">  
  reloadable="true"就表示tomcat在有变化时会自动加载,但他会浪费服务器资源 

相关推荐

    修改Tomcat默认访问根目录的方法

    - reloadable属性:当设置为true时,允许Tomcat在运行时监测在WEB-INF/classes目录和WEB-INF/lib目录下的类文件的改变,如果类文件被更新,应用将自动重新加载。这对于开发阶段非常有用,但会略微降低服务器的性能,...

    将web部署到tomcat当中

    在Windows系统中,你需要配置两个环境变量:`CATALINA_HOME`指向Tomcat的安装目录,`PATH`添加 `%CATALINA_HOME%\bin`,这样可以在命令行中直接运行Tomcat的管理工具。 **步骤三:启动Tomcat** 进入Tomcat的bin目录...

    不使用Tomcat插件的情况下创建与运行Tomcat工程的步骤

    本篇文章将详细讲解在不使用Eclipse内置的Tomcat插件(例如,Eclipse的WTP - Web Tools Platform)的情况下,如何创建并运行一个Tomcat工程。这将涉及到手动配置Tomcat服务器和在Eclipse中设置项目属性。 1. **安装...

    tomcat7部署应用

    标题“Tomcat7部署应用”涉及的是在Apache Tomcat 7服务器上发布和运行Web应用程序的基本过程。Apache Tomcat是一款开源的Java Servlet容器,广泛用于部署Java Web应用。以下是关于这个主题的详细知识点: 1. **...

    Eclipse Tomcat Server 加载项目

    本文将详细介绍如何在Eclipse中配置并使用Tomcat服务器来加载和运行Web项目。 #### 一、配置Tomcat服务器 **1. 添加Tomcat服务器** 在Eclipse中配置Tomcat服务器前,首先需要确保已经正确安装了Java Development...

    部署WEB应用到Tomcat的三种方式

    此时,项目会被自动复制到Tomcat的`webapps`目录下,通常会作为一个名为`ROOT`的应用程序运行。 这种方式的优点在于它提供了高度自动化的过程,使得开发者可以更专注于代码编写而不是部署细节。 #### 二、使用...

    springboot web程序运行在jdk1.6、tomcat6的demo

    这个Demo项目展示了如何在较旧的环境,如JDK 1.6和Tomcat 6上运行SpringBoot 1.5.6的Web程序。尽管SpringBoot通常建议使用更新的Java版本和内置的Tomcat服务器,但有时由于兼容性或遗留系统的需求,可能需要在较低...

    精通Tomcat-Java Web应用开发

    这本书全面覆盖了Tomcat的基础知识、高级特性以及实战技巧,旨在帮助开发者熟练掌握在Tomcat上构建、部署和优化Web应用的全过程。 1. **Tomcat基础**:Tomcat是一个开源的、轻量级的Java Servlet容器,主要用于运行...

    让tomcat自动加载修改过的类和servlet

    3. **错误处理**:如果热部署过程中出现错误,如编译错误或类加载问题,可能会导致应用程序进入不稳定状态,此时可能需要手动干预或重启服务器来恢复。 为了优化热部署的效果,建议在开发环境中使用,而在生产环境...

    eclipse下创建的tomcat project和web Dynamicproject的区别

    在实际开发过程中,通常我们会先创建一个Web Dynamic Project,编写Web应用的代码,完成后,将其部署到一个配置好的Tomcat Project中,通过Tomcat Project来启动服务器并运行Web应用。这种方式使得开发和服务器配置...

    Windows下Tomcat服务添加到系统服务

    ### Windows下Tomcat服务添加到系统服务 #### 一、引言 在Windows环境中,将Apache Tomcat应用服务器作为系统服务进行管理是非常实用的操作。这样做不仅能够提高系统的稳定性,还能简化日常运维工作流程,比如避免...

    Java获取Tomcat下war包部署的Web工程根目录路径的方法

    开发web工程时经常要获取工程的根目录,自己用Java实现的获取Tomcat下war包部署的Web工程根目录路径的方法,主要利用web工程默认的目录结构,此外也可以指定工程名称获取工程目录的绝对路径

    清空Tomcat中的work目录并重启Tomcat.bat

    Tomcat是Apache软件基金会的一个开源项目,它是一个广泛使用的Java Servlet容器,支持Java EE Web应用程序的运行。`work`目录在Tomcat的文件结构中扮演着重要角色,它是Tomcat用来存储JSP编译后的Java类文件的地方。...

    Tomcat-9.0.48配置web工程文档

    - **操作步骤**: 将上述目录下的所有内容复制到Tomcat安装目录下的`webapps`文件夹内。 **1.3 复制JDK的tools.jar** - **复制位置**: `%jdk%\lib` → `%tomcat%\webapps\webroot\WEB-INF\lib\` - **目的**: 为了...

    apache web整合Tomcat工具

    总的来说,这个"apache web整合Tomcat工具"简化了在Windows环境下设置Apache与Tomcat集成的过程,使得开发者可以更专注于应用开发,而不是服务器配置。通过合理配置,可以实现高效的Web服务,既发挥了Apache处理静态...

    tomcat项目没部署webapps下,如何找

    标题中的“tomcat项目没部署webapps下,如何找”是指在Apache Tomcat服务器中,一个Web应用程序没有按照常规方式部署到`webapps`目录下,用户可能在寻找如何定位和运行这种非标准部署的应用。这通常涉及到对Tomcat...

    java web项目配置tomcat连接池的那些搓事

    在Java Web开发中,Tomcat作为一款广泛应用的开源Servlet容器,常常被用来部署和运行Web应用程序。连接池是管理数据库连接的重要工具,它可以提高数据库操作的效率和性能。本篇文章将详细探讨如何在Java Web项目中...

    kettle的web版本,自己编译的war包,直接放到tomcat下运行,然后http://localhost:8080/web

    当Tomcat服务器启动或重新加载时,它会自动解压WAR文件,并创建一个与WAR文件同名的目录来运行Web应用。在此案例中,目录名为"webspoon"。 在部署完成后,用户可以通过Web浏览器访问Webspoon。在地址栏输入...

Global site tag (gtag.js) - Google Analytics