tomcat 加载一个类两次

8 篇文章 0 订阅
4 篇文章 0 订阅

tomcat 加载一个类两次

有一个项目使用 tomcat 作为服务器,部署好后,发现同一个 Quartz Job 类被加载两次,导致了相同的任务被执行两次,这是一个比较严重的问题。

解决方法

一开始猜测是由于有多个 tomcat 实例被启动,而每个实例启动了一个应用。但发现不是,因为对于同一个端口只能有一个应用被启动,所以否定了这个猜测。
后来通过查阅资料了解到,tomcat 对一个 web 应用会有一个类加载器,所以猜测是tomcat加载了两次应用,故导致类被加载了两次。后来查看 tomcat/conf/server.xml 文件,发现果然配置有误:

“` xml

    <!-- SingleSignOn valve, share authentication between web applications
         Documentation at: /docs/config/valve.html -->
    <!--
    <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    -->

    <!-- Access log processes all example.
         Documentation at: /docs/config/valve.html
         Note: The pattern used is equivalent to using pattern="common" -->
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log" suffix=".txt"/>

  <Context docBase="D:\apache-tomcat-8.0.24\wtpwebapps\webank_web_dms" path="/webank_web_dms" reloadable="false" source="org.eclipse.jst.jee.server:webank_web_dms"/></Host>

上面配置中,指定了两个应用目录:webapps 和 D:\apache-tomcat-8.0.24\wtpwebapps\webank_web_dms ,若它们下面都存在 webank_web_dms 这个应用,则会被分别加载,所以解决方法是,清空 &ltContext&gt 即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值