AAS9 应用filter报错。
现象描述:
应用带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方法(空方法即可)