我正在使用javax and jersey
我的 api 应用程序(公开 api 端点)我试图通过拥有一个实现 ExceptionMapper 的提供程序来捕获来自 fastXml 的异常(在 put 和 post 调用上)。
我的问题是,在 POST 或 PUT 上,每当我发送错误的属性名称时,有时我的映射器会捕获异常,有时则不会。例如:
运行我的应用程序一次 -> 一切都按预期工作,捕获异常。
再次运行我的应用程序(重新启动)-> 映射器没有捕获任何内容
我正在使用 Jersey 2.x,托管在 tomcat 中(不使用 spring 或类似的东西)。
网页.xml:
<servlet>
<servlet-name>api-service-endpoints</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>
com.api.providers,
com.api.resources
</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.filter.LoggingFilter</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
提供者代码:
@Provider
public class JsonMappingExceptionProvider
implements ExceptionMapper<JsonMappingException> {
public JsonMappingExceptionProvider() {
log.info("JsonMappingExceptionProvider created..");
}
private static final Logger log = LoggerFactory
.getLogger(JsonMappingExceptionProvider.class);
@Override
public Response toResponse(JsonMappingException exception) {
log.error("Error while parsing input", exception);
Response response = createBadRequestResponse();
return response;
}
有任何想法吗?