在Glassfish 4.0上部署Jersey 2.x webapp的问题

时间:2013-12-24 13:34:48

标签: jersey glassfish-4

与许多其他人一样,我遇到过将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(内部版本89),并收到以下错误

  

WELD-001408注入点[[BackedAnnotatedParameter] [BackedAnnotatedConstructor]参数1 @Inject org.glassfish.jersey.server.internal.routing中类型[Ref]与类型[Ref]的不满意依赖关系,带有限定符>> [@ Default]。 UriRoutingContext(参考,处理提供者)]

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

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

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

  

WELD-001414 Bean名称含糊不清。名称JerseyClassAnalyzer解析为bean [Managed Bean [class org.glassfish.jersey.internal.inject.JerseyClassAnalyzer],带有限定符[@Default @Named @Any],Managed Bean [class org.glassfish.jersey.internal.inject.JerseyClassAnalyzer] with限定符[@Default @Named @Any]]。

2 个答案:

答案 0 :(得分:0)

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

asadmin deploy --property implicitCdiEnabled = false

我认为这只是一个解决方案,因为一般情况下你应该可以在你的应用程序中包含Jersey而不会出现这个问题

答案 1 :(得分:0)

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