码头+ Jersey servlet外+焊接:焊接注入未初始化,有什么不好?(Jetty+Jerse

2019-09-18 08:02发布

我试图从迁移的Glassfish +泽西+焊接到码头。

我有这样的设置: pom.xml中,web.xml和Java启动的要点 。

应用似乎开始罚款,但任何服务请求时,我看到应该由焊缝(注射现场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());
    }
}

Answer 1:

嗨维克多的要求我的回答,我的博客上就这个问题与嵌入式码头。 我还推了一个有效的例子, github上 ,你可以克隆。

我看不出有什么错在你的要点,但是你能告诉你的记录器生产商?

更新:

我看到一个错字“BeanMnanager”在你的代码,但不知道这是否是原因

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


文章来源: Jetty+Jersey servlet+Weld: Weld injection not initialized, what is wrong?