2014-10-24 4 views
0

При запуске простого интерфейса REST с Eclipse с использованием зависимой версии Maven Maven, я не получаю никаких исключений, отображаемых после запуска ошибок в браузере. Другой выход журнала отображается в консоли просто отлично, но Исключения просто проглатываются.Отображение исключений Grizzly в консоли Eclipse

Я создал обработчик исключений, который не является ни инстанциированы под названием:

package mypackage.rest; 
@Provider 
class ExceptionHandler implements ExceptionMapper<Throwable> 
{ 
    @Override public Response toResponse(Throwable t) 
    { 
     System.out.println("toResponse called"); 
     t.printStackTrace(); 
     return Response.status(Status.BAD_REQUEST).entity(t.getMessage()).build(); 
    } 
} 

Конструкция Grizzly Сервер:

package mypackage.rest; 
public class GrizzlyHttpUtil 
{ 
    public static final URI  baseURI = UriBuilder.fromUri("http://localhost/").port(10010).build(); 

    public static HttpServer startThisServer() 
    { 
     ResourceConfig resCon = new ResourceConfig().packages("mypackage.rest"); 
     return server = GrizzlyHttpServerFactory.createHttpServer(baseURI, resCon); 
    } 
} 

The Rest API класс

package mypackage.rest; 
@Path("") 
public class Rest 
{ 
    @GET @Path("datasets") @Produces(MediaType.TEXT_HTML) 
    public static String datasets() 
    { 
    throw new RuntimeException(); 
    } 
} 

Update Я добрался до работа с resCon.register(ExceptionHandler.class);. Почему это необходимо? Почему ResourceConfig(). Packages (...) не обрабатывает это самостоятельно?

ответ

1

Мне просто пришлось решить ту же проблему. Вот мой код инициализации, который убедит сервер HTTP Grizzly для отображения ошибок: http://source.apidesign.org/hg/bck2brwsr/rev/18ae4fbcfb87

Logger l = Logger.getLogger("org.glassfish.grizzly.http.server.HttpHandler"); 
l.setLevel(Level.FINE); 
l.setUseParentHandlers(false); 
ConsoleHandler ch = new ConsoleHandler(); 
ch.setLevel(Level.ALL); 
l.addHandler(ch); 

Я использую Grizzly 2.3.3

Смежные вопросы