8

我有一个 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 在注入点 [[BackedAnnotatedParameter] 参数 2 的 [BackedAnnotatedConstructor] @ 带有限定符 [@Default] 的类型 [IterableProvider>] 不满足依赖注入 org.glassfish.jersey.internal.inject.JerseyClassAnalyzer(@Named ClassAnalyzer, IterableProvider>)]。

如果删除所有注释(预期的@Path)应用程序部署没有任何错误。

4

3 回答 3

10

从 maven pom.xml 中的依赖项列表中删除了球衣(球衣已经包含在 glassfish 4 中),现在可以正常部署了。

于 2013-11-13T14:15:36.843 回答
2

我发现这个问题有类似的问题,只想添加我的“2 美分”。在我的例子中,我将 Jersey 2.0 与 Jackson 一起使用,以便将 JSON 转换为对象,并将对象从我的其余接口转换为 JSON。这意味着我必须JacksonFeatureResourceConfig这样注册:

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;
    }
}

上面的两个类都要求我保持球衣和providedpom.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>
于 2014-11-14T10:10:04.377 回答
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 中部署应用程序的问题

于 2020-04-22T19:39:14.230 回答