使用简单的CDI注入部署Web应用程序时,WebLogic 12.1.3失败。抛出以下异常:
weblogic.application.ModuleException: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [Interface2] with qualifiers [@Default] at injection point [[field] @Inject public pruebas1.Clase1.clase2]
at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140)
at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:216)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:211)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
Truncated. see log file for complete stacktrace
Caused By: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [Interface2] with qualifiers [@Default] at injection point [[field] @Inject public pruebas1.Clase1.clase2]
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:315)
at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:284)
at org.jboss.weld.bootstrap.Validator.validateInjectionTarget(Validator.java:342)
at org.jboss.weld.manager.InjectionTargetValidator.addInjectionTarget(InjectionTargetValidator.java:29)
at org.jboss.weld.manager.BeanManagerImpl.createInjectionTarget(BeanManagerImpl.java:943)
Truncated. see log file for complete stacktrace
>
当我在OEPE 12.1.3.2中的WebLogic 12.1.3(Zip Distribution and Installers for Developers)中部署战争时,我得到了所描述的错误。但是,在同一个OEPE 12.1.3.2中使用WebLogic 12.1.1(Zip Distribution和Installers for Developers)没有问题。如果我导出thye war文件并使用没有OEPE集成的Web控制台进行部署,则不会出现问题。另外,当我在WebLogic 12.1.3中部署战争时。独立(“完整”发布)没有问题。
我也遇到过,MANIFEST.MF文件(在wlserver / server / lib / api.jar中)引用了wlserver / modules文件夹中不存在的“javax.inject_1.jar”。相反,文件“javax.inject-1.jar”。为了使我的项目工作(导入类javax.inject.Inject类),我从同一文件夹中的javax.inject-1.jar文件中复制了一个名为javax.inject_1.jar的文件。
war java源代码结构是:
src
pruebas1
Clase1.java
pruebas2
Clase2.java
Interface2.java
war WebContent结构是:
WebContent
WEB-INF
beans.xml
weblogix.xml
类和接口:
@WebService
public class Clase1 {
@Inject
public Interface2 clase2;
@WebMethod
public String aMayusculas(@WebParam(name = "palabra") String palabra) {
long tm = System.currentTimeMillis();
System.out.println(tm + " - clase2: " + (clase2 == null ? "null" : clase2.toString()));
return palabra == null ? "null" : tm + " - " + palabra.toUpperCase();
}
}
public interface Interface2 {
void doIt(String a);
}
public class Clase2 implements Interface2 {
@Override
public void doIt(String a) {
System.out.println(a);
}
}
XML文件: beans.xml中
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
weblogic.xml中
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
<wls:weblogic-version>12.1.3</wls:weblogic-version>
<wls:context-root>prueba05weblogic</wls:context-root>
</wls:weblogic-web-app>
提前致谢。
Efren V。
答案 0 :(得分:1)
经过三天的搜索,我们发现该项目只有在通过weblogic控制台部署时才有效,如果我们在eclipse中通过oracle插件部署它就无法工作。
因此,如果您正在使用eclipse,请在“服务器”视图中右键单击weblogic服务器,单击“属性 - &gt; Weblogic - &gt;发布”,将收音机“Pubish as a virtual application”更改为“Publish as”爆炸档案“
答案 1 :(得分:0)
问题已解决。
我在Oracle支持网站上创建了一个SR。 Oracle构建了一个内部补丁。
埃弗伦。
答案 2 :(得分:0)
您可以将@Inject注释替换为@Produces作为解决方法