2011-09-15 35 views
1

林試圖使用依賴注入的JBoss AS中7,並具有巨大的困難IM。作爲JBoss 7 - 依賴注入

我有安裝它同時包含EJB瓶和戰爭EAR。

戰爭包含RichFaces的Web應用程序。

林試圖注入從EJB JAR的EJB成面託管bean用下面的代碼:

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) 

請協助!

+0

你是從IDE運行呢?如果是的話然後展開服務器摺疊標記,看看他們兩個其實都是deployed.Seems就像打仗文件沒有there.Also你什麼時候得到這個錯誤,在當你啓動服務器? – Shahzeb

+0

你能否提供更多關於'UserFacadeService'和'UserFacadeBean'註釋的信息? – Thor

回答

1

它看起來像這個問題可能是你的戰爭沒有爲定義了EJB JAR的依賴。如果沒有,最好爲您的EJB jar文件定義您的WAR的META-INF/MANIFEST.MF的Class-Path條目。

您還可能要檢查您的配置文件,並確保<ear-subdeployments-isolated />標籤設置爲false。

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

class loading in JBoss AS7也有一些體面的文件。

0

首先,確保你的戰爭中,你有文件META-INF/MANIFEST.MF,並有有行類路徑: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");