【问题标题】:Problems deploying Jersey 2.x webapp on Glassfish 4.0在 Glassfish 4.0 上部署 Jersey 2.x webapp 的问题
【发布时间】:2013-12-24 13:34:47
【问题描述】:

与许多其他人一样,我在将 Jersey webapps 部署到 Glassfish 4.0 上时遇到了问题。我搜索了类似的帖子,但没有找到任何解决我看到的部署错误的方法。

我尝试在 Glassfish 3.1 上成功部署/运行的应用程序。

我决定从一个简单的 Jersey 应用程序开始,并在此基础上开始构建。所以我从 https://jersey.java.net/documentation/latest/getting-started.html#new-webapp 引用的 Maven 原型开始。

我运行了提供的 mvn 命令行来创建原型项目。然后我将 pom.xml 的 maven-compiler-plugin 配置值修改为源和目标的 1.7(而不是 1.6)。

构建应用程序,部署到 Glassfish 4.0 (build 89),并收到以下错误

WELD-001408 在注入点 [[BackedAnnotatedParameter] [BackedAnnotatedConstructor] @Inject org.glassfish.jersey.server.internal.routing.UriRoutingContext(参考,处理提供者)]

此错误是我在原始应用程序中看到的典型错误。我将错误解释为 CDI 在泽西岛的某处注入 Ref<ContainerRequest> 参数失败。

这些类型的错误的解决方案是什么?这是一个非常简单的 Jersey webapp。它有一个 Resource 类和一个返回硬编码字符串的 @GET 方法。应用程序代码本身不涉及 CDI。

其他信息
将 POM 的 jersey.version 从原来的 2.5 更改为 2.0 会导致

WELD-001414 Bean 名称不明确。名称 JerseyClassAnalyzer 解析为带有限定符 [@Default @Named @Any] 的豆 [Managed Bean [class org.glassfish.jersey.internal.inject.JerseyClassAnalyzer],Managed Bean [class org.glassfish.jersey.internal.inject.JerseyClassAnalyzer]限定符 [@Default @Named @Any]]。

【问题讨论】:

    标签: jersey glassfish-4


    【解决方案1】:

    如果您没有在应用程序中使用 CDI,您可以通过如下部署来解决此问题:

    asadmin deploy --property implicitCdiEnabled=false

    我认为这只是一个变通的解决方案,因为通常你应该能够在你的应用程序中包含 Jersey 而不会出现这个问题

    【讨论】:

      【解决方案2】:

      停止并重新启动服务器后,原型应用程序已成功部署(并运行)。 (通过管理控制台执行此操作。换句话说,即使没有将implicitCdiEnabled 设置为false,部署也是成功的)。显然服务器处于损坏状态,但这是出乎意料的,因为应用程序从未成功完成部署。

      【讨论】:

        猜你喜欢
        • 2013-02-03
        • 1970-01-01
        • 1970-01-01
        • 2011-10-20
        • 1970-01-01
        • 2021-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多