【发布时间】:2021-07-03 10:08:10
【问题描述】:
即使我的代码中只有一个 servlet,我也会遇到错误。
WARN 2021-04-06 21:52:42,874 [main] org.eclipse.jetty.util.component.AbstractLifeCycle: FAILED ServletHandler@93501be{FAILED}: java.lang.IllegalStateException: Multiple servlets map to path /*: git.service.http.MyServlet68360fb9[mapped:EMBEDDED:null],io.dropwizard.jersey.setup.JerseyServletContainer-713e49c3[mapped:EMBEDDED:null]
java.lang.IllegalStateException: Multiple servlets map to path /*: git.service.http.MyServlet68360fb9[mapped:EMBEDDED:null],io.dropwizard.jersey.setup.JerseyServletContainer-713e49c3[mapped:EMBEDDED:null]
下面是我的代码:
environment
.getApplicationContext()
.addServlet(
new ServletHolder(
new MyServlet(
injector.getInstance(HttpRepositoryResolver.class))),
“/*“);
谁能帮我弄清楚?
【问题讨论】:
-
您认为泽西岛的运行情况如何? Jersey 实际上是一个 Servlet 应用程序。
-
哦,好吧。那么我应该在我的代码中进行哪些更改来解决这个问题? @PaulSamsotha
-
您需要更改您尝试注册的 servlet 的路径。 Jersey 具有将请求转发到其他 servlet 的选项,但要使其正常工作,Jersey 需要注册为 Servlet Filter ,但我认为 Dropwizard 没有任何配置选项可以执行此操作。您需要禁用 Dropwizard 的 Jersey(不确定是否可能)并手动将 Jersey 的 ServletContainer 注册为 servlet 过滤器。这是不好的解决方案。我不会推荐它(即使它是可能的)。更改 servlet 的路径。期间。
-
这是否可行(只是更改路径)?我会假设即使在这样做之后,Jersey 仍会使用其 /* 路径消耗所有请求。
-
我改变了路径,它工作了。我在这里不知道的是 JerseyServletContainer 使用相同的路径。非常感谢您的帮助!! @PaulSamsotha
标签: java servlets jersey jetty dropwizard