3

Glassfish + Jersey+WeldからJettyに移行しようとしています。

私はそのような設定をしています:pom.xml、web.xml、Javaランチャーの要点

アプリケーションは正常に起動しているようですが、リクエストを処理すると、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!");
    }
}

何が問題ですか?

更新:ロガープロデューサーは疑わしいように見えますが、呼び出されることさえありません:

/** 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 に答える