[英]ExceptionMapper provider not working with jersey
我正在使用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看起來像下一個代碼片段,我正在捕獲所有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();
}
}
我其余的Endpoint看起來像:
@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");
}
}
我想念的是什么?
packages("com.apporelbotna.appuestas.rest.endpoint")
告訴Jersey哪些軟件包掃描@Provider
和@Path
類並進行注冊。 您可以列出多個軟件包,也可以只使用com.apporelbotna.appuestas
類的基本軟件包,Jersey將遞歸掃描該軟件包。
因此,如果您希望自動注冊ExceptionMapper
,請執行以下一項操作
packages("com.apporelbotna.appuestas.rest.endpoint",
"com.apporelbotna.appuestas.rest.exception");
// -or-
packages("com.apporelbotna.appuestas.rest");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.