tomcat异常:Web应用程序[]似乎已经启动了一个...or非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。

1、问题1:Web应用程序[]似乎已经启动了一个…


1.1、报错异常信息显示:

6-Apr-2021 19:37:28.042 警告 [RMI TCP Connection(6)-127.0.0.1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[smbms]似乎启动了一个名为[Abandoned connection cleanup thread]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[
 java.lang.Object.wait(Native Method)
 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
 com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:64)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 java.lang.Thread.run(Thread.java:748)]
16-Apr-2021 19:37:28.115 警告 [RMI TCP Connection(6)-127.0.0.1] org.apache.tomcat.util.descriptor.web.WebXml.setVersion 未知版本字符串 [4.0]。将使用默认版本。

1.2、解决方法

        添加监听器,当项目进程结束时销毁该进程,ok,完美解决

package com.fufu.listen;

import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Enumeration;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import com.mysql.jdbc.AbandonedConnectionCleanupThread;

@WebListener
public class ContextFinalizer implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        Enumeration<Driver> drivers = DriverManager.getDrivers();
        Driver d = null;
        while (drivers.hasMoreElements()) {
            try {
                d = drivers.nextElement();
                DriverManager.deregisterDriver(d);
            }
            catch (SQLException ex) {
                ex.printStackTrace();
            }
        }
        AbandonedConnectionCleanupThread.shutdown();
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

    }
}

2、问题2:非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。


2.1、报错异常信息显示:

16-Apr-2021 19:45:13.402 信息 [Abandoned connection cleanup thread] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问:此Web应用程序实例已停止。无法加载[java.lang.ClassLoader]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
java.lang.IllegalStateException: 非法访问:此Web应用程序实例已停止。无法加载[java.lang.ClassLoader]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
	at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1378)
	at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForClassLoading(WebappClassLoaderBase.java:1366)
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1218)
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180)
	at com.mysql.jdbc.AbandonedConnectionCleanupThread.checkContextClassLoaders(AbandonedConnectionCleanupThread.java:90)
	at com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:63)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

2.2、解决方法

         进入tomcat的配置文件,conf->server.xml,找到Host标签,修改其子标签Context的reloadable为false。ok,完美解决

 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
            <-- 设置为false-->
		<Context  reloadable="false" />
		
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>
  • 12
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
多个Tomcat启动错误:代理抛出异常:java.rmi.server.ExportException是一个非常常见的错误,在Tomcat服务中经常会遇到。这个错误通常是由于Tomcat服务器已经启动,而新的Tomcat服务正在尝试启动导致的。当新的Tomcat实例尝试使用同样的端口和协议(如HTTP或HTTPS)启动时,就会发生这种情况。 解决这个问题的方法如下: 1.首先,要确保所有的Tomcat服务都已经停止。如果你已经尝试了很多次启动Tomcat实例,你可能需要在操作系统中终止所有相关的Tomcat进程。 2.接下来,你需要修改Tomcat服务的配置文件以使用不同的端口和协议。你可以在Tomcat的server.xml文件中修改这些设置,该文件位于Tomcat的安装目录中的/conf目录下。 3.确保每个Tomcat服务都使用唯一的端口和协议。你可以在server.xml文件中修改HTTP或HTTPS端口的设置,以确保它们在不同的Tomcat服务之间不会发生冲突。 4.如果你仍然无法启动Tomcat服务并且收到一个代理抛出异常:java.rmi.server.exportexception错误,你可能需要考虑使用一个更高版本的Tomcat或更新的Java版本。有时,这个错误可能是由于Tomcat或Java的已知问题或漏洞导致的。 总之,多个Tomcat实例启动错误:代理抛出异常:java.rmi.server.exportexception是一个很普遍的问题,在使用Tomcat服务时可能会出现。但是,你可以通过确保每个Tomcat服务使用唯一的端口和协议来解决这个问题,或者考虑使用更高版本的Tomcat或Java。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值