`

运行期在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在有变化时会自动加载,但他会浪费服务器资源 

相关推荐

    详解WebRoot与WebContent区别

    Web服务器在运行时会加载这些jar包,使得Web应用程序能够使用这些功能。 不同点WebRoot和WebContent的主要区别在于它们在Web项目中的用途和在项目构建过程中的角色。 1. WebRoot:在使用MyEclipse进行Web开发时,...

    将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. **...

    Tomcat上部署Web项目并运行

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

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

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

    myeclipse下tomcat动态加载

    Tomcat是Apache软件基金会的开源项目,是一款广泛使用的Java Servlet容器,用于部署和运行Java Web应用程序。在MyEclipse中配置Tomcat进行动态加载,能够让开发者在不重启服务器的情况下实现应用的热更新,提高开发...

    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应用服务器作为系统服务进行管理是非常实用的操作。这样做不仅能够提高系统的稳定性,还能简化日常运维工作流程,比如避免...

    WST中新建Web工程部署在Tomcat

    在“Subdirectory to set as web application root (optional)”中,可以输入“/WebContent”,这样你的Web应用资源将被放置在项目的这个目录下。 5. **添加Tomcat库**: 为了使Web项目能够在Tomcat上运行,需要将...

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

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

    drp WebRoot

    4. **部署流程**:在开发过程中,开发者会先在本地环境中构建和测试应用,然后将生成的文件(如WAR或JAR包)部署到服务器的WebRoot下。对于Java应用,这可能涉及Tomcat、Jetty等应用服务器的配置。 5. **安全性**:...

    解决Tomcat不能部署

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

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

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

    在Tomcat部署和发布Web应用

    在部署 Web 应用到 Tomcat 时,通常需要将应用的 `.war` 文件(Web Application Archive)复制到 Tomcat 的 `webapps` 目录下,或者通过管理界面(如 `manager` 应用)进行在线部署。部署后,Tomcat 会自动解压 `....

    Web应用服务器tomcat视频.zip

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

    Tomcat8web服务器

    - **webapps**:默认的应用部署位置,将你的Web应用的WAR文件或目录放在这里,Tomcat会自动部署它们。 - **logs**:记录Tomcat的日志信息。 - **temp**:运行时临时文件存放的地方。 - **work**:JSP编译后的类文件...

    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