2012-06-20 4 views
3

Я пытаюсь перейти от Glassfish + Jersey + Weld to Jetty.Причал + Сержант Джерси + Сварка: инъекция сварного шва не инициализирована, что не так?

У меня есть такая настройка: gist of pom.xml, web.xml and Java launcher.

Приложение кажется прекрасным, но при обслуживании любого запроса я вижу, что поле, которое должно быть введено Weld (logger), равно null.

@RequestScoped 
@Path("/foobar") 
@Consumes({ ExtendedMediaType.APPLICATION_JSON, 
    ExtendedMediaType.APPLICATION_JAVASCRIPT }) 
@Produces({ ExtendedMediaType.APPLICATION_JSON, 
    ExtendedMediaType.APPLICATION_JAVASCRIPT }) 
public class EmailResource extends { 

    @Inject 
    private Logger logger; 

    @Override @POST 
    public Response create(EmailJob document) 
     throws URISyntaxException, ResourceException 
    { 
     logger.debug("Hi there!"); 
    } 
} 

В чем проблема?

обновление: производитель Logger выглядит сомнительным, но это даже не дозвонились:

/** This class uses CDI to alias Java EE resources into CDI beans. **/ 
public class Resources { 

    @Produces 
    public Logger produceLog(InjectionPoint injectionPoint) { 
     return LoggerFactory.getLogger(
      injectionPoint.getMember().getDeclaringClass().getName()); 
    } 
} 

ответ

3

Привет Victor мой ответ, как просил, Я blogged об этом со встроенным причалу. Я также нажал полностью рабочий пример на github, который вы можете клонировать.

Я не вижу ничего плохого в вашем gist, однако вы можете показать своего производителя Logger?

UPDATE:

Я вижу опечатку «BeanMnanager» в вашем коде, но не уверен, если это является причиной

new Resource("BeanManager", new Reference("javax.enterprise.inject.spi.BeanMnanager", 
     "org.jboss.weld.resources.ManagerObjectFactory", null)); 
+0

Пробовал и она работает. Благодаря! –

+0

Мне просто интересно, почему 'AppServlet' в part2. Разве это не должно работать только с сервлетом Джерси? Это не выглядит слишком чистым. –

+0

BTW вы cau используете 'com.sun.jersey.config.property.packages' и идите без' RestConfig.getClasses() '. –

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