【问题标题】:Jetty 8, Weld - Injection isn't workingJetty 8,焊接 - 注射不起作用
【发布时间】:2013-06-27 16:44:55
【问题描述】:

我正在尝试使用 Jetty 8 作为服务器 (jetty-maven-plugin:8.1.11.v20130520)、用于 CDI 的 Weld (weld-servlet:2.0.1.Final)、用于 JPA 的 Hibernate ( hibernate-entitymanager:4.2.2.Final, hibernate-jpa-2.0-api:1.0.1.Final) 和 JAX-RS 的 Jersey。

似乎注射根本不起作用。 我测试了EntityManager是否被注入,值为null。 执行服务器时,日志不会显示任何错误或警告。

我错过了什么吗? 如果需要,我会将日志文件发布到 gist。

这里是所有相关文件的要点:https://gist.github.com/StalkingKillah/e986474b6885d83c7f8d

【问题讨论】:

    标签: jersey jetty maven-jetty-plugin weld


    【解决方案1】:

    这就是我在 Jetty 9 上工作的方式,它在 Jetty 8 上应该基本相同。

    http://www.eclipse.org/jetty/documentation/current/framework-weld.html

    在 webapp 之外使用焊接 jar 更容易,因为您不必像在这里一样调整暴露给 webapp 类加载器的类(使用 ServletContext 的 -org.eclipse.jetty 位) )。我怀疑还有更多的类必须添加到其中才能使其工作。您应该会在日志中看到一条注释,说明它已全部启用并处于活动状态。

    【讨论】:

    • 您能发布一些示例配置文件吗?我似乎忽略了什么。或者更好的是,嵌入式 jetty 9 与焊接的示例?
    • 嵌入有点棘手,您正在处理通过部署管理器部署适当的战争文件吗?对于jetty-maven-plugin,您可能只需要将weld 作为依赖项添加到jetty-maven-plugin 本身(请参阅有关向插件定义添加依赖项的maven 文档)
    • 出于开发目的,我使用 maven-jetty-plugin,但对于生产,我想使用嵌入式版本。关于使用战争部署或爆炸战争设置嵌入式版本的任何指示?
    • 好吧,关于此时配置类路径的所有内容,并且在这方面更容易像上面的文档链接中提到的那样进行操作,只需将焊接罐放在类加载器中的码头罐中(但是你正在构建它)。当 Weld 不在你的 jar 中时,它更容易配置,因为它需要与通过隔离的 webapp 类加载器不暴露的类进行交互
    • 我修复了错误部分。 Weld 现在初始化,但注入和拦截不起作用。我还需要配置什么吗?
    猜你喜欢
    • 2011-02-16
    • 1970-01-01
    • 2016-02-26
    • 2022-11-23
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    相关资源
    最近更新 更多