在Glassfish 4.0上部署Jersey 2.x webapp时出现问题

在Glassfish 4.0上部署Jersey 2.x webapp时出现问题,jersey,glassfish-4,Jersey,Glassfish 4,和其他许多人一样,我在Glassfish 4.0上部署Jersey webapps时也遇到过问题。我搜索过类似的帖子,但没有找到任何解决我所看到的部署错误的方法 我正在尝试部署/运行的应用程序在Glassfish 3.1上成功地完成了部署/运行 我决定用一个简单的Jersey应用程序从头开始,并在上面开始构建。所以我从引用的Maven原型开始 我运行提供的mvn命令行来创建原型项目。然后,我将pom.xml的maven编译器插件配置值修改为源和目标的1.7(而不是1.6) 生成应用程序,部署到G

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

我正在尝试部署/运行的应用程序在Glassfish 3.1上成功地完成了部署/运行

我决定用一个简单的Jersey应用程序从头开始,并在上面开始构建。所以我从引用的Maven原型开始

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

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

WELD-001408在[BackedAnnotatedConstructor]@Injector org.glassfish.jersey.server.internal.routing.UriRoutingContext(Ref,ProcessingProviders)的注入点[[BackedAnnotatedParameter]参数1处具有限定符>>[@Default]的[Ref]类型的未满足依赖项]

此错误是我在原始应用程序中看到的典型错误。我将此错误解释为CDI未能在泽西岛的某个地方注入
Ref
参数

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

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

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


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

asadmin部署--属性隐式CDIEnabled=false


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

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