Исключение WELD CDI в Glassfish 4

я хочу развернуть веб-сервис jax-rs 2.0 (джерси 2.0) на моем GlassFish 4, но я получаю исключение Weld CDI. У меня нет beans.xml в моем проекте.

SEVERE: Undeployment failed for context /restExample
SEVERE: Exception while loading the app : CDI deployment failure:WELD-001408 Unsatisfied dependencies for type [Set<Service>] with qualifiers [@Default] at injection point [[BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject com.google.common.util.concurrent.ServiceManager(Set<Service>)]
org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [Set<Service>] with qualifiers [@Default] at injection point [[BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject com.google.common.util.concurrent.ServiceManager(Set<Service>)]
    at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:403)
    at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:325)
    at org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:177)
    at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:208)
    at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:519)
    at org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:505)
    at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:480)
    at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:536)
    at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:216)
    at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:131)
    at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:328)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:493)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:527)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:523)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:356)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:522)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:546)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1423)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1500(CommandRunnerImpl.java:108)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1762)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1674)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
    at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
    at org.glassfish.grizzly.http.server.StaticHttpHandler.service(StaticHttpHandler.java:297)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:246)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)

Мой пом.xml

<dependencies>
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>2.0</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>2.0</version>
    </dependency>
</dependencies>

Если я устанавливаю зависимости для предоставленной области, я не получаю исключения, но у меня нет массажаBodyWriter и т. д. в моем проекте/веб-сервисе, и тогда я получаю исключение.

Я стараюсь исключить гуаву

Есть идеи?

РЕДАКТИРОВАТЬ: На моем ноутбуке я не получаю это исключение и нашел причину: если я использую JDK 7_21, я не получаю исключение сварки, но с JDL 7_25 стеклянная рыба выдает исключение !!! С актуальным JDK 7_40 тот же результат!


person Tim    schedule 11.09.2013    source источник
comment
Кстати, это не ваш web.xml, это ваш pom.xml.   -  person rdcrng    schedule 11.09.2013
comment
В новой версии Джерси используется гуава или что-то в этом роде? Похоже, они используют аннотации JSR 330, но когда вы помещаете их в среду CDI без надлежащей настройки, они умирают.   -  person LightGuard    schedule 12.09.2013
comment
Да, в зависимостях от jersey есть gauva.jar 14.01. Что я могу сделать?   -  person Tim    schedule 12.09.2013


Ответы (2)


Если можете, обновите Guava до версии 16.0.1, в которой удалены аннотации @Inject и @Singleton. Это должно сработать, по крайней мере, для меня. Удачи.

person Xiaodong Xie    schedule 28.03.2014
comment
Как я могу это сделать? ... у меня нет прямой зависимости с гуавой, только через трикотажную. Я просто вижу трикотажную гуаву в иерархии зависимостей. - person Rafael; 01.08.2014
comment
Здравствуйте, сначала извините за поздний ответ. Вы можете просто явно добавить зависимость Guava в свой файл pom с версией 16.0.1. - person Xiaodong Xie; 13.10.2014

У меня была такая же проблема, и я решил ее, вручную добавив зависимости, используя фактические файлы jar из папки модулей GF4. кажется, версия maven отличается от версии GF4.

теперь для меня проблема с com.fasterXML, похоже, GF4 его не поддерживает

person user2802678    schedule 21.09.2013