【发布时间】:2018-10-29 16:41:03
【问题描述】:
我正在使用 Jersey 用 java 做一个 Web 服务。 我对球衣的依赖是:
/* JAX-RS Impl (Jersey) */
compile 'org.glassfish.jersey.inject:jersey-hk2:2.27'
compile 'org.glassfish.jersey.containers:jersey-container-servlet:2.27'
compile 'org.glassfish.jersey.media:jersey-media-sse:2.27'
compile 'org.glassfish.jersey.core:jersey-server:2.27'
//Jackson implementation
compile 'org.glassfish.jersey.media:jersey-media-json-jackson:2.27'
// Hateoas
compile 'org.glassfish.jersey.ext:jersey-declarative-linking:2.27'
//Jersey Impl test
compile 'org.glassfish.jersey.test-framework:jersey-test-framework-core:2.27'
compileOnly 'javax.servlet:javax.servlet-api:4.0.1'
我的类 Exception 看起来像下一个 sn-p,我正在捕获所有 Throwable 来测试它的工作原理。
package com.apporelbotna.appuestas.rest.exception;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
@Provider
public class WebserviceExceptionMapper implements ExceptionMapper<Throwable>
{
public WebserviceExceptionMapper()
{
System.out.println("I'm getting created!!! - WebserviceExceptionMapper");
}
public Response toResponse(Throwable ex)
{
return Response.status(404).build();
}
}
而我的其他端点看起来像:
@GET
public Response getUsers() throws Exception
{
throw new Exception("Hi i'm crashing!");
}
我阅读了 Jersey 的文档,但我不明白我可以在课堂上使用 @provider 注册异常映射器。但应用程序无法识别该类。我试图在我的 ResourceConfig 课程中注册我的课程。这很有效。
@Provider
@javax.ws.rs.ApplicationPath("webservice")
public class RestResourceConfig extends ResourceConfig
{
@Context
public void setServletContext(ServletContext context)
{
if (context != null)
{
context.getInitParameter("system.info.allow");
}
}
public RestResourceConfig()
{
// Register components in a package
register(WebserviceExceptionMapper.class);
packages("com.apporelbotna.appuestas.rest.endpoint");
}
}
我错过了什么?
【问题讨论】:
标签: java web-services exception jersey-2.0