Tomcat启动时项目重复加载问题
- |
- 浏览:1454
- |
- 更新:2014-04-22 22:03
- |
- 标签:启动
Tomcat配置Host时经常遇到项目加载多次情况,下面是本人总结的各类解决方法。
问题解析
-
appBase与docBase区别
appBase是指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录.如果没有此项,默认为<CATALINA_HOME>/webapps。
docBase是指定Web应用的文件路径.可以给定绝对路径,也可以给定相对于Host的appBase属性的相对路径. 如果Web应用采用开放目录结构,那就指定Web应用的根目录;如果Web应用是个WAR文件,那就指定WAR文件的路径。
-
tomcat配置文件配置以下参数时
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="D:/apache-tomcat-7.0.53/webapps/Test" debug="0" reloadable="true" />
</Host>
每次启动tomcat,项目会出现被加载两次的问题,配置文件如下图所示:
-
出现上述问题的原因是tomcat加载玩appBase="webapps"之后又去加载docBase,因此造成加载两次项目的问题,修改path参数path="\Test"(项目名称),配置文件内容是
<Host name="localhost" appBase="D:/apache-tomcat-7.0.53"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="\Test" docBase="D:/apache-tomcat-7.0.53/webapps/Test" debug="0" reloadable="true" />
配置文件图显示如下:
-
如果不想修改path="Test"的参数,那么可以修改appBase="webapps"的参数。这样的方式也可以解决当前多次加载问题;appBase的参数指到其他文件目录不能出现在tomcat的webapps目录下,这样也可以访问根目录不用敲项目名称。配置文件内容是
<Host name="localhost" appBase="D:/apache-tomcat-7.0.53"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="D:/apache-tomcat-7.0.53/webapps/Test" debug="0" reloadable="true" />
</Host>
配置文件内容图显示:
-
如果项目不是在MyEclipse中启动而是在linux操作系统中启动,可以把项目搬到其他目录中,前提是不能在webapps目录下,appBase="webapps"参数可有可无,配置文件内容是
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="D:/apache-tomcat-7.0.53/Test" debug="0" reloadable="true" />
</Host>
配置文件内容图显示:
-
本文来源于:http://jingyan.baidu.com/article/48206aeaf9422e216ad6b39b.html
相关推荐
Tomcat通过自定义的类加载器实现了特定的类加载顺序,以确保能够正确处理不同来源的类文件,避免类的重复加载和类版本冲突问题。以下是Tomcat启动过程中类加载的具体顺序: #### 三、类加载顺序详述 1. **Bootstrap...
通过对题目中提供的信息进行分析,我们可以了解到如何利用 Spring 与 Quartz 进行集成,从而实现 Tomcat 启动时调用 Quartz 执行一次任务的需求。通过合理配置 `SchedulerFactoryBean`、`CronTriggerBean` 和 `...
在Spring Boot应用部署到Tomcat服务器的过程中,遇到“启动子级时出错”的问题,这通常是由于多种原因导致的。以下是一些可能的原因和解决策略: 1. **配置错误**: - 检查`web.xml`配置,确保没有错误的配置项,...
3. **使用ClassPath优化**:通过 `-Djava.endorsed.dirs` 指定endorsed目录,避免重复加载JAR包,减小启动时间。 4. **预热操作**:通过`jpda.start`参数启动Tomcat,进行应用预热,预先执行部分操作,降低用户首次...
### Tomcat7启动或运行时报错:`java.lang.ClassCastException: org.apache.jasper.el.ELContextImpl` #### 问题概述 在使用Tomcat7部署Web应用的过程中,可能会遇到启动或者运行时出现以下错误提示: ``` java....
- **双亲委派模型**:当一个类加载器收到加载类的请求时,它会先委托给父类加载器尝试加载,只有当父类加载器无法加载时,才会尝试自己加载。这种机制避免了类的重复加载和保证了类加载的一致性。 3. OSGI类加载器...
一、Tomcat启动参数配置 1. **基本启动参数**: - `-D<name>=<value>`:定义系统属性,例如`-Djava.awt.headless=true`用于无头模式运行。 - `-cp`或`-classpath`:指定类路径,包含所有依赖的JAR文件和目录。 -...
8. **部署与测试**:完成上述步骤后,将项目部署到 Tomcat 并启动。在实际操作中,可能还需要处理其他依赖冲突、权限问题或特定功能的配置。在测试过程中,应确保所有的功能都能够正常工作,包括流媒体服务、Spring ...
确保Tomcat版本与JDK版本的兼容性至关重要,因为不兼容可能导致各种运行时错误,例如类加载问题或方法调用异常。 3. **替换`catalina.jar`**: 当项目中出现与`catalina.jar`相关的错误时,一种可能的解决方案是...
Tomcat自动加载是关键,因为我们需要确保Quartz能在Tomcat服务器启动时正确初始化,并且在运行过程中能够响应XML配置文件的变更。在Tomcat中,我们可以使用ContextListener来监听应用的上下文初始化和销毁事件。在上...
在CentOS上部署了Tomcat应用后,用户反映每次重启Tomcat服务后,首次访问某个接口时响应速度非常缓慢,通常需要等待大约两分钟的时间才能完成加载。 #### 二、原因分析 1. **随机数生成问题** - 在CentOS上部署的...
TOMCAT内存大小调整是指在使用Java程序从数据库中查询大量数据或应用服务器(如Tomcat、JBoss、WebLogic)加载jar包时,出现java.lang.OutOfMemoryError异常的解决方法。这种异常主要是由于应用服务器的内存不足引起...
Tomcat是Apache软件基金会的Jakarta项目下的一个开源Java Servlet容器,它广泛用于部署和运行Java Web应用程序。 在Tomcat7中,JAR包的加载是通过Classloading机制来实现的。Classloading是Java运行时环境的一部分...
【标题】:“Tomcat性能优化”意味着我们正在探讨如何提升Apache Tomcat服务器的运行效率,使其在处理Web应用时能够更快、更稳定地工作。Tomcat是一个开源的Java Servlet容器,广泛用于部署Java Web应用程序。 ...
1. **双倍启动**:当Tomcat启动时,如果发现有配置错误或重复配置,可能会导致服务加载两次。这通常是因为配置文件中的错误,如重复定义了Server、Service、Engine或Host等元素,或者错误地启用了两个不同端口的服务...
这个过程对于Java开发人员来说非常有用,因为它可以帮助他们清理临时编译文件,解决可能因缓存问题导致的错误,并确保应用在更新后能正确加载新的类。 Tomcat是Apache软件基金会的一个开源项目,它是一个广泛使用的...
然后通过启动脚本启动Tomcat,它会自动检测并加载新的应用。 配置Tomcat通常涉及到修改`conf/server.xml`文件,例如设置端口号、添加虚拟主机、配置连接池等。同时,你可能还需要根据应用需求调整`context.xml`和`...
在某些情况下,可能需要通过命令行手动停止或启动Tomcat进程,例如进行系统维护、更新应用或解决性能问题。 在Linux或Unix环境中,可以使用`ps`命令来查找正在运行的Tomcat进程,然后用`kill`或`killall`命令来结束...