Jetty + Jersey servlet + Weld:Weld注入没有初始化,有什么问题?

时间:2012-06-20 20:28:19

标签: java jetty jersey jboss-weld

我试图从Glassfish + Jersey + Weld迁移到Jetty。

我有这样的设置:gist of pom.xml, web.xml and Java launcher

应用似乎开始很好,但在提供任何请求时,我看到应该由Weld(logger)注入的字段为空。

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

1 个答案:

答案 0 :(得分:3)

嗨,Victor我的答案是按照要求,我blogged关于嵌入式码头的问题。我还将一个完全有效的例子推到了你可以克隆的github

我没有看到你的要点有什么不妥,但是你能展示你的Logger制作人吗?

更新:

我在你的代码中看到一个拼写错误的“BeanMnanager”,但不确定是否是原因

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