WELD-001408:GlassFish中+泽西2预约等待依赖关系类型(WELD-001408:

2019-10-29 18:26发布

我想注入类为使用HK2我的球衣JAX-RS应用程序,在GlassFish运行。

但是,当我尝试运行我的应用程序我得到这个错误:

com.sun.enterprise.admin.remote.RemoteFailureException:加载应用程序异常:java.lang.IllegalStateException:ContainerBase.addChild:启动:org.apache.catalina.LifecycleException:org.apache.catalina.LifecycleException部署过程中出现错误:org.jboss.weld.exceptions.DeploymentException:WELD-001408:用于与限定符类型UsersDAO不合格依赖@default在注射点[BackedAnnotatedParameter] [BackedAnnotatedConstructor] @注入公共com.myapp.users.resources.UserResource的参数1(UsersDAO )

在网上搜索我发现CDI在GlassFish中被“竞合”与HK2为DI,所以为了解决这个问题,我要这个jar添加到我的类路径(我使用的摇篮):

implementation ("org.glassfish.jersey.containers.glassfish:jersey-gf-cdi:2.14")

但是,这是行不通的,它只是给我的另一个含义模糊的错误:

java.io.IOException的:加载应用程序异常::CDI部署失败:WELD-001409:部署过程中发生错误:com.sun.enterprise.admin.remote.RemoteFailureException歧义依赖性与限定符类型WebAppExceptionHolder在注射点[@default UnbackedAnnotatedField] @Inject org.glassfish.jersey.gf.cdi.internal.WebAppExceptionInterceptor.store在org.glassfish.jersey.gf.cdi.internal.WebAppExceptionInterceptor.store(WebAppExceptionInterceptor.java:0)可能的依赖关系: - org.glassfish。 jersey.ext.cdi1x.internal.CdiComponentProvider$Hk2Bean@60e01611, - Managed Bean的[类org.glassfish.jersey.gf.cdi.internal.WebAppExceptionHolder]与预选赛[@Any @default。 请参阅server.log的更多细节。

这是我的AbstractBinder实现:

public class UsersDependencyBinder extends AbstractBinder {    
    private static final Logger LOG = LoggerFactory.getLogger(UsersDependencyBinder.class);

    @Override
    protected void configure() {
        try {
            // Acts as a Singleton
            bind(new UsersDAO(new CachedDbConnector()));
        } catch (ClassNotFoundException e) {
            LOG.error("Error registering the DB Driver Manager", e);
        }
    }
}

我用它注册register(new UsersDependencyBinder());

我没有使用任何web.xml ,我想是干净的*.xml只用注释。

文章来源: WELD-001408: Unsatisfied dependencies for type in GlassFish + Jersey 2