java - AWS Tomcat on Elastic Beanstalk servlet 过滤器
问题描述
我第一次尝试在 AWS Elastic Beanstalk 上启动我的 Web 应用程序(平台:Tomcat 8,Java 8 在 64 位 Amazon Linux/3.0.0 上运行)。
它成功地在 beanstalk 中创建了应用程序,但是当它尝试启动我的应用程序(与 war 一起上传)时,它会抛出一个错误:
04-Jun-2018 20:44:02.060 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.filterStart Exception starting filter SecurePathFilter
java.lang.AbstractMethodError
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:285)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:266)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4708)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5348)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:729)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1126)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1868)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
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)
SecurePathFilter 是一个 javax.servlet.Filter 类,所以我认为可能是tomcat(或者我在本地使用的其他版本)上缺少jsp和servlet api jar,但是我该如何检查呢?我该如何添加/更改它们?
编辑:根据要求,我的 web.xml 的相关部分:
<filter>
<filter-name>SecurePathFilter</filter-name>
<filter-class>be.qsds.sade.filters.SecurePathFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SecurePathFilter</filter-name>
<url-pattern>/secure/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
我的 SecurePathFilter 类大致是:
public class SecurePathFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
...
filterChain.doFilter(request, response);
}
}
解决方案
@jontro 引导我朝着解决问题的正确方向前进。我正在使用最新版本的 javax.servlet-api (4.0.1) 在本地构建我的应用程序,其中自动部署在 AWS 上的 Tomcat8.5 使用旧版本 (3.1.0)。
我在 pom 中更改了版本,添加了一些缺失的方法,重建并上传了我的 war 和 eureka!
谢谢指导!
推荐阅读
- windows - Kestrel 如何在相似或重复的 TLS 证书中进行选择?
- google-cloud-platform - Google Cloud Speech-to-text 非常不准确,最后一个结果包含所有其他结果,并且仅在最后一个结果中包含 speakerTag
- node.js - Nodejs Xml 到 Json xml2js
- python - CS50 mario python不太舒服.rstrip函数
- c - 这是 malloc() 函数的正确用法吗?
- javascript - 如何将 React 状态传递给另一个组件中的嵌套组件
- python - 如果条件为 False,如何打破 while 循环?
- docusignapi - DOCUSIGN - 让其他选项卡或字段填充到文档签名过程中
- php - Docker-compose,如何为每个人隐藏 php 端口?
- javascript - 无法连接 MongoDB 服务器?