java - Tomcat 8.5、Netbeans 11.2 异常启动过滤器

标签 java tomcat netbeans

当我使用 Java 8、Tomcat 8、Netbeans 8 运行 Web 应用程序时,它运行得非常好。使用 Netbeans 11 运行相同的应用程序,会出现以下错误,即使它仍然是 Netbeans 11 中的 Java 8、Tomcat 8。

这是tomcat错误日志。

Mar 05, 2020 9:30:40 AM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter DatabaseCheckFilter
java.lang.RuntimeException: 
    at filters.DatabaseCheckFilter.<init>(DatabaseCheckFilter.java:1)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at java.lang.Class.newInstance(Class.java:442)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:424)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4072)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4726)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(StandardService.java:525)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

该类的代码是

package filters;

import dataaccesslayer.DatabaseCheck;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import utilities.exceptions.ExceptionLogger;

public class DatabaseCheckFilter implements Filter {

    // The filter configuration object we are associated with.  If
    // this value is null, this filter instance is not currently
    // configured.
    private FilterConfig filterConfig = null;

    public DatabaseCheckFilter() {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        boolean databaseError = false;
        try {
            DatabaseCheck check = new DatabaseCheck();
            databaseError = check.Check(response);
            if (databaseError == true) {
                RequestDispatcher fd=request.getRequestDispatcher("/error/unavailable.jsp");
                fd.forward(request,response);
            }
            else {
                chain.doFilter(request, response);
            }
        } catch (Exception exception) {
            ExceptionLogger.logException(exception);
        }
    }

    public FilterConfig getFilterConfig() {
        return (this.filterConfig);
    }

    public void setFilterConfig(FilterConfig filterConfig) {
        this.filterConfig = filterConfig;
    }

    public void destroy() {        
    }

    public void init(FilterConfig filterConfig) {
        this.filterConfig = filterConfig;
    }
}

web.xml 的摘录是

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <filter>
        <filter-name>UserInfoFilter</filter-name>
        <filter-class>filters.UserInfoFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>UserInfoFilter</filter-name>
        <url-pattern>/scheduler.jsp</url-pattern>
    </filter-mapping>
    <filter>
        <filter-name>DatabaseCheckFilter</filter-name>
        <filter-class>filters.DatabaseCheckFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>DatabaseCheckFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <servlet>

最佳答案

Netbeans 11+ 版本解决了这个问题。

关于java - Tomcat 8.5、Netbeans 11.2 异常启动过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60437753/

相关文章:

java.lang.ClassCastException : org. apache.tomcat.dbcp.dbcp2.PoolingDataSource$PoolGuardConnectionWrapper 无法转换为 oracle.jdbc.OracleConnection

linux - 如何在 linux debian 操作系统中的 tomcat web 服务器上部署数据文件

java - 类中的 Paint 方法、Jpanel 上、Netbeans 的设计模式

java - 如何取消选中场景生成器中的可调整大小选项

java - 在多个线程之间共享对象

java - 我可以强制消除 Rhino 调用的重载方法的歧义吗?

java - 在另一个库中配置ActorSystem

Java Jersey 和 servlet 过滤器

java - tomcat 池未重置池。连接错误太多

c++ - Netbeans C++ 程序没有终端输出