关于TomCat自动加载class问题_王二北的博客-程序员秘密

技术标签: java  开发工具  网上看到的  web.xml  

每次用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,呵呵。 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yonghudengluzhonging/article/details/84092626

智能推荐

python之异常处理_Julia_luofang的博客-程序员秘密

乍看之下这个代码没有错误,但是如果文件中没有存在这个文件的话,系统就会报FileNotFoundError这个错误在python中,常用try和except配合来进行异常处理,这样可以使得用户界面更加友好。作为一个程序员,最重要的要知道错误在哪里,所以可以使用下面的方式将错误显示出来不仅如此,try也支持使用多个except。如果不知道错误类型,也可是直接使用except来进行...

jQuery手机实现左右滑动事件_jquery手机滑动_GJWeigege的博客-程序员秘密

随着手机的不断发展,移动端页面已经逐渐成长起来,但对于移动端的手势事件并不是十分完善,并没有左右滑动事件。不过可以通过已存在的事件实现移动端页面的左右滑动事件。移动端相关的事件: touchstart:手势触碰屏幕是触发该事件; touchmove:手指在屏幕中移动时触发该事件; touchend:手指离开屏幕时触发该事件。实现代码如下://左右滑动翻页this.$vrTable.on('t

1 TypeError: Index(...) must be called with a collection of some kind, ' ' was passed columns_努力奋斗-不断进化的博客-程序员秘密

今天犯了这个错误 ,查到的解决方法如下columns : Index or array-likeColumn labels to use for resulting frame. Will default to np.arange(n) if no column labels are provided如果你的数据只有一列,对于column,需要加个中括号df = pd.DataFr...

QQuickWidget和QQuickView_风烟倦的博客-程序员秘密

QQuickWidget与QQuickView的区别:import QtQuick 2.0import QtQuick.Window 2.3import QtQuick.Controls 2.5Item { width: 400; height: 350; Rectangle { id: back; width: 300; height: 30; radius: height / 8;

学习网站收集_Pillar~的博客-程序员秘密

安卓工具网站收集: APIStore http://apistore.baidu.com/Bmob: http://www.bmob.cn/productsUncode移动后端开发框架 http://www.uncode.cn/Android学习链接大放送官方网站:  http://www.android.com/   http://developer.android.com/index.html

随便推点

命令行选项解析函数(C语言):getopt()、getopt_long()和getopt_long_only_getopt_long_only长参数 c语言_nmglwy的博客-程序员秘密

转载:http://www.cnblogs.com/liwei0526vip/p/4873111.html上午在看源码项目 webbench 时,刚开始就被一个似乎挺陌生函数 getopt_long() 给卡住了,说实话这函数没怎么见过,自然不知道这哥们是干什么的。于是乎百度了一番,原来是处理命令行选项参数的,的确,正规点的大型程序一般第一步就是处理命令行参数的,接着才是主干程序。在百度和 man

Android系统移植与调试之------->如何修改Android手机显示的4G信号强度的格子数_weixin_33733810的博客-程序员秘密

在修改显示的信号强度之前,先了解一下什么是dB,什么是dBm?1.dB  dB是一个表征相对值的值,纯粹的比值,只表示两个量的相对大小关系,没有单位,当考虑甲的功率相比于乙功率大或小多少个dB时,按下面的计算公式:10log(甲功率/乙功率),如果采用两者的电压比计...

sgu 143 Long live the Queen 简单树形dp_TIMELIMITE的博客-程序员秘密

// sgu 143  Long live the Queen 简单树形dp//// 题意:在树上选一个连通字图,使得节点的权值之和最大// f[i] 表示以该节点为根的字图权值之和的最大值// 则有 f[i] = w[i] + sigma(max(0,f[j])) i是j的父节点// 最后在所有的f中挑个最大值就是答案。。。。#include #include #includ

霍夫变换学习记录_西西敏的博客-程序员秘密

霍夫变换学习记录目的:分离出图片中的几何形状。通常有:①直线 ②椭圆先看一段代码:#include &lt;opencv2/opencv.hpp&gt;#include &lt;opencv2/imgproc/imgproc.hpp&gt; using namespace cv; int main( ){ Mat srcImage = imread("1.jpg"); ...

《数据库系统概论》之数据库设计六步骤(需求、概念、逻辑、物理、实施、运行维护)_数据库设计的六个阶段和系统的关系_BitHachi的博客-程序员秘密

文章目录0.一图总览1.数据库设计概述及六步骤简介2.需求分析---步骤一2.1 收集资料2.2 分析整理2.3 数据流图2.4 数据字典2.5 用户确认3.概念结构设计---步骤二3.1 E-R 模型3.2 建立 E-R 模型4.逻辑结构设计---步骤三4.1 E-R 模型向关系模式的转换4.2 关系模式的优化4.3 设计用户子模式5.物理结构设计---步骤四5.1 确定数据库的物理结构5.2 物理结构进行评价6.数据库实施---步骤五7.数据库运行维护---步骤六0.一图总览1.数据库设计概述及

推荐文章

热门文章

相关标签