Ошибка WebLogic 12.1.3 WELD-001408 Неудовлетворительные зависимости

WebLogic 12.1.3 не работает при развертывании веб-приложения с помощью простого внедрения CDI. Выдается следующее исключение:

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  
>

Когда я развертываю войну в WebLogic 12.1.3 (Zip-рассылка и установщики для разработчиков) внутри OEPE 12.1.3.2, я получаю описанную ошибку. Но с WebLogic 12.1.1 (Zip-дистрибутив и установщики для разработчиков) внутри того же OEPE 12.1.3.2 проблем нет. Также нет проблем, если я экспортирую файл войны и развертываю его с веб-консолью без интеграции с OEPE. Кроме того, когда я развертываю войну в WebLogic 12.1.3. автономный («полный» выпуск) проблем нет.

Я также обнаружил, что файл MANIFEST.MF (внутри wlserver / server / lib / api.jar) ссылается на «javax.inject_1.jar», которого нет в папке wlserver / modules. Вместо этого есть файл «javax.inject-1.jar». Чтобы мой проект заработал (импортируйте класс javax.inject.Inject class), я скопировал файл с именем javax.inject_1.jar из файла javax.inject-1.jar в той же папке.

Исходная структура 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>

Заранее спасибо.

Эфрен В.


person Efren Villamagua    schedule 07.11.2014    source источник
comment
Это более или менее обман: stackoverflow.com/questions/15162522/ Здесь также упоминается, что было исправлено в патче 12.1.1 biemond.blogspot.com/2012_01_01_archive.html Возможно, он снова сломался в 12.1.3   -  person Display Name is missing    schedule 11.11.2014


Ответы (3)


Проблема решена.

Я создал SR на сайте поддержки Oracle. Oracle построил внутренний патч.

Эфрен.

person Efren Villamagua    schedule 08.12.2014

После трехдневного поиска мы обнаружили, что проект работал только в том случае, если он был развернут через консоль weblogic, если мы развернули через плагин oracle в eclipse, он не будет работать.

Итак, если вы используете eclipse, в представлении «серверы» щелкните правой кнопкой мыши сервер weblogic, выберите «Свойства -> Weblogic -> Публикация», измените переключатель «Опубликовать как виртуальное приложение» на «Опубликовать как развернутый архив».

person fegnus    schedule 13.04.2015
comment
Спасибо! Вы спасли мою жизнь :) - person AliReza19330; 25.07.2016

вы можете заменить аннотацию @Inject на @Produces в качестве обходного пути

person Taras    schedule 19.12.2014