2012-08-16 9 views
7

मैं जर्सी Guice उपयोग कर रहा हूँ और एक कस्टम विन्यस्त करने की जरूरत ExceptionMapperमैं Google गिइस के साथ जर्सी अपवाद मैपर का उपयोग कैसे करूं?

मेरे मॉड्यूल इस तरह दिखता है:

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(); 
    } 
} 

उत्तर

14

आपका 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(); 
    } 
} 

तो बस एक ही Injector जहाँ आपके JerseyServletModule में Guice मॉड्यूल में से एक में ExceptionMapper बाँध, और जर्सी 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); 
     ... 
    } 
} 
संबंधित मुद्दे