2016-03-28 5 views
0

У меня есть следующие ExceptionMapper:CDI инъекции с ExceptionMapper- @Inject нуль

@Provider 
public class GenericExceptionMapper 
implements ExceptionMapper<Exception> { 
@Inject 
private ExceptionDAO exceptionDAO; 

@Override 
public Response toResponse(Exception e) { 
    LOGGER.error(e.getMessage(), e); 
    return Response.status(INTERNAL_SERVER_ERROR) 
      .type(MediaType.TEXT_PLAIN) 
      .entity(e.getMessage()) 
      .build(); 
} 

exceptionDAO всегда нуль. У меня есть beans.xml

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee /beans_1_0.xsd" 
></beans> 

Я попытался инъекционными много классов, но они всегда показывают утратившими.

+0

У вас есть CDI, работающий в любом месте вашего проекта? Что это за проект (EAR, WAR и т. Д.)? Где конкретно beans.xml? Как оформляется аннотация «ExceptionDAO»? – dcsohl

+0

О, еще несколько вопросов: есть ли в GenericExceptionMapper какие-либо аннотации? Как вы его получите? – dcsohl

+0

Его проект JAR. Да CDI работает в других породах – abbas

ответ

0

Оба класса управляются (ExceptionDAO), а класс, вводящий его, должен быть осведомлен о CDI. В этом случае это, вероятно, будет включать в себя маркировку и классы с @RequestScoped (или другой нормальный объем CDI).

Не избавляйтесь от @Provider или других аннотаций JAX-RS; просто добавьте аннотацию CDI.