3

我正在尝试从 Glassfish+Jersey+Weld 迁移到 Jetty。

我有这样的设置:pom.xml、web.xml 和 Java 启动器的要点

应用程序似乎可以正常启动,但是在处理任何请求时,我看到应该由 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!");
    }
}

问题是什么?

更新:记录器生产者看起来很可疑,但它甚至没有被调用:

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

1 回答 1

3

嗨,维克多,我按照要求回答了我的问题,我用嵌入式码头写了一篇关于这个的博客。我还将一个完整的工作示例推送到github,您可以克隆它。

我看不出你的要点有什么问题,但是你能告诉你的 Logger 制作人吗?

更新:

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

new Resource("BeanManager", new Reference("javax.enterprise.inject.spi.BeanMnanager",
        "org.jboss.weld.resources.ManagerObjectFactory", null));
于 2012-06-22T12:42:44.637 回答