我有一个Bean接口,AbstractBean(实现Bean)和SpecificBean(扩展AbstractBean)。我想通过以下代码片段注入SpecificBean:
@Stateless
@Specific
public class SpecificBean extends AbstractBean {..}
@Path("resource")
public class Service {
@Inject
@Specific
private Bean bean;
}
当我尝试将其部署到glassfish时,我会看到下一个错误:
发生错误部署期间发生错误:加载应用程序时出现异常:CDI部署失败:WELD-001408类型[IterableProvider>]的不满意依赖关系,注入点带有限定符[@Default] [[BackedAnnotatedParameter] [参数2] BackedAnnotatedConstructor] @Inject org.glassfish.jersey.internal.inject.JerseyClassAnalyzer(@Named ClassAnalyzer,IterableProvider>)]。
如果删除所有注释(预期的@Path)应用程序部署没有任何错误。
答案 0 :(得分:10)
从maven pom.xml中的依赖项列表中删除了jersey(泽西已经包含在glassfish 4中),现在就可以部署了。
答案 1 :(得分:2)
我发现这个问题有类似的问题,只想添加我的" 2美分"。在我的例子中,我使用Jersey 2.0和Jackson,以便将JSON转换为对象,并从我的其余接口转换为JSON。这意味着我必须在JacksonFeature
上注册ResourceConfig
,如下所示:
import org.glassfish.jersey.jackson.JacksonFeature;
import org.glassfish.jersey.message.GZipEncoder;
import org.glassfish.jersey.server.ResourceConfig;
public class JacksonRestConfiguration extends ResourceConfig {
public JacksonRestConfiguration() {
register( new GZipEncoder() );
register( JacksonFeature.class );
}
我还在我的应用程序扩展上禁用了Moxy:
import org.glassfish.jersey.CommonProperties;
@ApplicationPath("services")
public class RestApplication extends Application implements Feature {
public boolean configure( final FeatureContext context ) {
String postfix = '.' + context.getConfiguration().getRuntimeType().name().toLowerCase();
context.property( CommonProperties.MOXY_JSON_FEATURE_DISABLE + postfix, true );
return true;
}
}
上述两个课程都要求我在provided
中将pom.xml
作为 <dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.13</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.13</version>
<scope>provided</scope>
</dependency>
,以便正确生成war文件:
{{1}}
答案 2 :(得分:0)
以下一些步骤可以帮助我解决此问题:
打开命令窗口(最好是管理员)。 点击开始->输入cmd 然后按Enter。
转到安装GlassFish的路径,例如: C:\ AppServers \ glassfish5 \ glassfish \ bin。
运行以下命令:
asadmin start-domain
asadmin set configs.config.server-config.cdi-service.enable-implicit-cdi=false
重新启动GlassFish并尝试部署您的应用程序。
感谢Stuart Mcculloch在此论坛上提供的支持:https://www.eclipse.org/forums/index.php?t=msg&th=490794&goto=1068764&#msg_1068764
发生异常:部署期间发生错误:加载应用程序时发生异常:CDI部署失败:WELD-001408:带有限定符@Default的Injector类型的依赖关系未满足
解决了部署GlassFish的问题