Jboss AS 7 - Внедрение зависимостей - PullRequest
1 голос
/ 15 сентября 2011

Я пытаюсь использовать инъекцию зависимостей в Jboss AS 7, и у меня огромные трудности.

Я настроил EAR, который содержит как EJB-банку, так и войну.

Войнасодержит веб-приложение richfaces.

Я пытаюсь внедрить EJB из jar-файла ejb в управляемый bean-компонент Faces с кодом ниже:

 public class UserController {

    @EJB(mappedName="UserService")
    private UserFacadeService userService;

    public String getService(){
        if(userService == null){

, однако при развертывании jboss выдает ошибкуконсоль:

rolled back with failure message {"Services with missing/unavailable dependencies" => ["jboss.deployment.subunit.\"GoodByeJohnEAR.ear\".\"GoodByeJohnWeb-1.0-SNAPSHOT.war\".component.\"managed-bean.za.co.gbj.UserController\".START missing [ jboss.naming.context.java.module.GoodByeJohnEAR.\"GoodByeJohnWeb-1.0-SNAPSHOT\".\"env/za.co.gbj.UserController/userService\" ]","jboss.deployment.subunit.\"GoodByeJohnEAR.ear\".\"GoodByeJohnWeb-1.0-SNAPSHOT.war\".jndiDependencyService missing [ jboss.naming.context.java.module.GoodByeJohnEAR.\"GoodByeJohnWeb-1.0-SNAPSHOT\".\"env/za.co.gbj.UserController/userService\" ]","jboss.naming.context.java.module.GoodByeJohnEAR.\"GoodByeJohnWeb-1.0-SNAPSHOT\".\"env/za.co.gbj.UserController/userService\".jboss.deployment.subunit.\"GoodByeJohnEAR.ear\".\"GoodByeJohnWeb-1.0-SNAPSHOT.war\".module.GoodByeJohnEAR.\"GoodByeJohnWeb-1.0-SNAPSHOT\".2 missing [ jboss.naming.context.java.module.GoodByeJohnEAR.\"GoodByeJohnWeb-1.0-SNAPSHOT\".env/UserService ]"]}
09:03:50,576 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-8) Starting deployment of "GoodByeJohnEAR.ear"
09:03:50,670 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) Starting deployment of "GoodByeJohnWeb-1.0-SNAPSHOT.war"
09:03:50,670 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-8) Starting deployment of "GoodByeJohnEJB-1.0-SNAPSHOT.jar"
09:03:51,367 WARN  [org.jboss.as.server.deployment.service-loader] (MSC service thread 1-2) Encountered invalid class name "com.sun.faces.vendor.Tomcat6InjectionProvider:org.apache.catalina.util.DefaultAnnotationProcessor" for service type "com.sun.faces.spi.injectionprovider"
09:03:51,367 WARN  [org.jboss.as.server.deployment.service-loader] (MSC service thread 1-2) Encountered invalid class name "com.sun.faces.vendor.Jetty6InjectionProvider:org.mortbay.jetty.plus.annotation.InjectionCollection" for service type "com.sun.faces.spi.injectionprovider"
09:03:51,375 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-8) JNDI bindings for session bean named UserFacadeBean in deployment unit subdeployment "GoodByeJohnEJB-1.0-SNAPSHOT.jar" of deployment "GoodByeJohnEAR.ear" are as follows:

    java:global/GoodByeJohnEAR/GoodByeJohnEJB-1.0-SNAPSHOT/UserFacadeBean!za.co.gbj.UserFacadeService
    java:app/GoodByeJohnEJB-1.0-SNAPSHOT/UserFacadeBean!za.co.gbj.UserFacadeService
    java:module/UserFacadeBean!za.co.gbj.UserFacadeService
    java:global/GoodByeJohnEAR/GoodByeJohnEJB-1.0-SNAPSHOT/UserFacadeBean
    java:app/GoodByeJohnEJB-1.0-SNAPSHOT/UserFacadeBean
    java:module/UserFacadeBean

09:03:51,406 INFO  [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-4) JNDI bindings for session bean named UserFacadeBean in deployment unit subdeployment "GoodByeJohnWeb-1.0-SNAPSHOT.war" of deployment "GoodByeJohnEAR.ear" are as follows:

    java:global/GoodByeJohnEAR/GoodByeJohnWeb-1.0-SNAPSHOT/UserFacadeBean!za.co.gbj.UserFacadeService
    java:app/GoodByeJohnWeb-1.0-SNAPSHOT/UserFacadeBean!za.co.gbj.UserFacadeService
    java:module/UserFacadeBean!za.co.gbj.UserFacadeService
    java:global/GoodByeJohnEAR/GoodByeJohnWeb-1.0-SNAPSHOT/UserFacadeBean
    java:app/GoodByeJohnWeb-1.0-SNAPSHOT/UserFacadeBean
    java:module/UserFacadeBean

09:03:51,577 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 1) Service status report
   New missing/unsatisfied dependencies:
      service jboss.naming.context.java.module.GoodByeJohnEAR."GoodByeJohnWeb-1.0-SNAPSHOT".env/UserService (missing)
      service jboss.naming.context.java.module.GoodByeJohnEAR."GoodByeJohnWeb-1.0-SNAPSHOT"."env/za.co.gbj.UserController/userService" (missing)

Пожалуйста, помогите!

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

Похоже, что проблема может заключаться в том, что у вашей WAR нет зависимости для вашего EJB-файла.Лучше всего определить запись Class-Path в WAR-файле META-INF / MANIFEST.MF для файлов JAR EJB, если у вас его нет.

Возможно, вы также захотите проверить файл конфигурации и убедиться, что <ear-subdeployments-isolated />для тега установлено значение false.

<subsystem xmlns="urn:jboss:domain:ee:1.0" >            
  <ear-subdeployments-isolated>false</ear-subdeployments-isolated>
</subsystem>

Также имеется несколько приличных документов по загрузке классов в JBoss AS7 .

0 голосов
/ 16 сентября 2011

Сначала убедитесь, что в вашей войне у вас есть файл META-INF / MANIFEST.MF , и там есть строка Class-Path: GoodByeJohnEJB-1.0-SNAPSHOT.jar ,

Затем в своем классе UserController попытайтесь удалить mappedName, просто добавьте аннотацию EJB.

Или вы можете использовать это:

InitialContext ic = new InitialContext();
UserFacadeService userService = (UserFacadeService )ic.lookup("java:global/GoodByeJohnEAR/GoodByeJohnEJB-1.0-SNAPSHOT/UserFacadeBean");
...