`

运行期在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. **安装...

    《tomcat web开发及整合应用》

    创建完成后,Eclipse会自动生成项目结构,包括Web-INF目录下的web.xml文件,这是Web应用的部署描述符,用于配置应用的各个组件和服务。 在Web项目中,我们需要编写Servlet和JSP文件。Servlet是Java Web开发中的核心...

    Tomcat启动顺序

    总结来说,Tomcat的启动顺序是一个自底向上,从核心到应用的过程,依次加载Bootstrap、System、Common、Shared和WebApp类加载器,确保了服务的正确初始化和Web应用程序的隔离运行。理解这一启动流程对于调试、优化和...

    Tomcat7部署多个Web项目的方法-有图有真相

    如果项目是在某些集成开发环境(IDE)如MyEclipse中创建的,那么需要指定的是项目的`WebRoot`目录,这是因为IDE管理项目的目录结构可能会包含额外的文件夹层次,而Web应用程序的入口目录通常是`WebRoot`。...

    tomcat7部署应用

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

    Tomcat上部署Web项目并运行

    在Tomcat服务器上部署并运行Web项目是Java EE开发中常见的操作,通常涉及以下知识点: 1. **Myeclipse IDE的使用**:Myeclipse是一个集成开发环境,它支持多种应用程序开发,包括Java EE。Myeclipse通常用于Web项目...

    用Tomcat 和Eclipse开发Web 应用程序(部署发布)配置.docx

    本文主要讲解了如何使用 Tomcat 和 Eclipse 开发 Web 应用程序,包括如何创建一个新的 Web 项目、如何配置 Tomcat 服务器、如何将项目部署到 Tomcat 服务器上。 创建新的 Web 项目 首先,在 Eclipse 中创建一个新...

    部署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容器,主要用于运行...

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

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

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

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

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

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

    解决Tomcat不能部署

    在IT行业中,尤其是在Java Web开发领域,Tomcat服务器是一个广泛使用的应用服务器,它负责运行和部署Servlet和JSP应用程序。然而,"解决Tomcat不能部署"的问题常常困扰着开发者,尤其是那些使用MyEclipse集成开发...

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

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

    Web应用服务器tomcat视频.zip

    【描述】:本教程主要涵盖了与Web应用服务器Tomcat相关的知识,通过一系列视频课程,深入浅出地讲解了如何搭建LNMP架构,JDK的安装与配置,以及Tomcat的环境部署、目录结构解析和管理端配置等内容。以下是各视频课程...

    Tomcat-9.0.48配置web工程文档

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

Global site tag (gtag.js) - Google Analytics