我正在使用 Jersey Guice 并且需要配置自定义ExceptionMapper
我的模块如下所示:
public final class MyJerseyModule extends JerseyServletModule
{
@Override
protected void configureServlets()
{
...
filter("/*").through(GuiceContainer.class);
...
}
}
这是我的ExceptionMapper
:
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.ExceptionMapper;
public class MyExceptionMapper implements ExceptionMapper<MyException>
{
@Override
public Response toResponse(final MyException exception)
{
return Response.status(Status.NOT_FOUND).entity(exception.getMessage()).build();
}
}
您的 ExceptionMapper 必须注释为@Provider
并成为单身人士。
import com.google.inject.Singleton;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
@Provider
@Singleton
public class MyExceptionMapper implements ExceptionMapper<MyException>
{
@Override
public Response toResponse(final MyException exception)
{
return Response.status(Status.NOT_FOUND).entity(exception.getMessage()).build();
}
}
然后只需绑定ExceptionMapper
在同一 Guice 模块之一中Injector
你在哪里JerseyServletModule
,Jersey Guice 会自动找到它。
import com.google.inject.AbstractModule;
public class MyModule extends AbstractModule
{
@Override
protected void configure()
{
...
bind(MyExceptionMapper.class);
...
}
}
也可以直接绑定在JerseyServletModule
如果你想:
public final class MyJerseyModule extends JerseyServletModule
{
@Override
protected void configureServlets()
{
...
filter("/*").through(GuiceContainer.class);
bind(MyExceptionMapper.class);
...
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)