我将Weblogic 12b用作App服务器。我的应用程序在我的项目中将Jersey 2.5.1与Guice3一起使用。我有一个名为Application的类,该类是从org.glassfish.jersey.server.ResourceConfig派生的。在服务器启动时,出现如下错误:
Caused By: org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type ServiceLocator with qualifiers @Default
at injection point [BackedAnnotatedParameter] Parameter 1 of [BackedAnnotatedConstructor] @Inject public Application(ServiceLocator)
at Application.<init>(Application.java:22)
at org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:359)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:281)
at org.jboss.weld.bootstrap.Validator.validateProducer(Validator.java:417)
at org.jboss.weld.injection.producer.InjectionTargetService.validateProducer(InjectionTargetService.java:36)
at org.jboss.weld.manager.InjectionTargetFactoryImpl.validate(InjectionTargetFactoryImpl.java:135)
似乎用WELD代替了Google Guice for DI。
同一问题,我正在进入业务层,其中EJB类由Java类组成,并使用@Inject注入它们。
我什至试图更改他将@Inject导入Google注入,但异常已更改但未解决。
我试图在web-inf中使用beans.xml
@ApplicationPath("/")
public class Application extends ResourceConfig {
@Inject
public Application(final ServiceLocator serviceLocator) {
}
}
答案 0 :(得分:0)
您需要有效地禁用CDI。
您可以通过将WEB-INF / beans.xml文件添加到包含以下内容的应用程序来实现此目的:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="none">
</beans>
请注意bean-discovery-mode="none"
。
如果您的项目包含带有可能看起来像CDI bean的类的其他jar,那么您还需要向其中添加类似的META-INF / beans.xml文件。
但是,我怀疑这可能会导致其他不相关的问题。通常,应用服务器喜欢控制类的生命周期,其中包括与JAX-RS相关的类。