获取“java.lang.IllegalStateException:多个 servlet 映射到路径 /*”错误,即使存在单个 servlet

问题描述

即使我的代码中只有一个 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))),“/*“);

谁能帮我弄清楚?

解决方法

git.service.http.MyServletio.dropwizard.jersey.setup.JerseyServletContainer 均已注册到网址模式 /*

请记住,对于 Servlet,没有请求的可选处理之类的东西。

如果请求的资源与 url-pattern 匹配,它就会被发送到那个 Servlet,它必须处理那个请求,它不能“哦,不,不适合我,让别人来处理这个请求”。

我建议将 Jersey 放在特定的东西上,例如 /api/*/rest/* 作为网址模式。