无法将* .war部署到Glassfish 4

时间:2013-11-08 21:30:14

标签: java java-ee dependency-injection ejb

我有一个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)应用程序部署没有任何错误。

3 个答案:

答案 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)

以下一些步骤可以帮助我解决此问题:

  1. 打开命令窗口(最好是管理员)。 点击开始->输入cmd 然后按Enter。

  2. 转到安装GlassFish的路径,例如: C:\ AppServers \ glassfish5 \ glassfish \ bin。

    运行以下命令:

    asadmin start-domain  
    asadmin set configs.config.server-config.cdi-service.enable-implicit-cdi=false
    
  3. 重新启动GlassFish并尝试部署您的应用程序。

感谢Stuart Mcculloch在此论坛上提供的支持:https://www.eclipse.org/forums/index.php?t=msg&th=490794&goto=1068764&#msg_1068764

发生异常:部署期间发生错误:加载应用程序时发生异常:CDI部署失败:WELD-001408:带有限定符@Default的Injector类型的依赖关系未满足

解决了部署GlassFish的问题