项目

一般

简介

AAS9 应用filter报错。

she sh超过 3 年 之前添加

现象描述:

    应用带filter部署时报如下错误。

javax.servlet.ServletException: java.lang.AbstractMethodError
    at com.apusic.web.container.WebComponent.create(WebComponent.java:284)
    at com.apusic.web.container.WebComponent.getComponent(WebComponent.java:158)
    at com.apusic.web.container.WebComponent.init(WebComponent.java:221)
    at com.apusic.web.container.WebContainer.loadFilter(WebContainer.java:1494)
    at com.apusic.web.container.WebContainer.loadFilters(WebContainer.java:1504)
    at com.apusic.web.container.WebContainer.start(WebContainer.java:308)
    at com.apusic.web.http.VirtualHost.addContext(VirtualHost.java:154)
    at com.apusic.web.http.HttpServer.loadWebModule(HttpServer.java:224)
    at com.apusic.web.WebService.loadWebModule(WebService.java:591)
    at com.apusic.deploy.runtime.WebModule.load(WebModule.java:1963)
    at com.apusic.deploy.runtime.J2EEApplication.loadModules(J2EEApplication.java:1303)
    at com.apusic.deploy.runtime.J2EEApplication.startApplication(J2EEApplication.java:1209)
    at com.apusic.deploy.runtime.J2EEApplication.startService(J2EEApplication.java:1065)
    at com.apusic.service.Service.start(Service.java:205)
    at com.apusic.deploy.runtime.J2EEDeployer.startUserApplications(J2EEDeployer.java:175)
    at com.apusic.deploy.runtime.J2EEDeployer.startService(J2EEDeployer.java:142)
    at com.apusic.service.Service.start(Service.java:205)
    at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.apusic.jmx.MBeanDescriptor.invoke(MBeanDescriptor.java:551)
    at com.apusic.jmx.DynamicMBeanSupport.invoke(DynamicMBeanSupport.java:62)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    at com.apusic.server.J2EEServer.start(J2EEServer.java:650)
    at com.apusic.server.J2EEServer.startup(J2EEServer.java:372)
    at com.apusic.server.Main.main(Main.java:35)
Caused by: java.lang.AbstractMethodError
    at com.apusic.web.container.FilterComponent.initializeComponent(FilterComponent.java:41)
    at com.apusic.web.container.FilterComponent.initializeComponent(FilterComponent.java:21)
    at com.apusic.web.container.WebComponent.create(WebComponent.java:276)
    ... 26 more

原因分析:

应用在开发filter时,依赖了高版本的 servlet-api,在filter里面不需要实现 init 方法,在低版本的servlet-api中,自定义filter必须要实现init方法,而aasv9中是部署了低版本的servlet-api,导致运行时报上述错误、

解决方案:

如果要部署在v9上,需要修改应用filter,添加init方法(空方法即可)