2011-09-15 3 views
1

임은 Jboss AS 7에서 의존성 삽입을 사용하려고 시도하고 있으며 엄청난 어려움을 겪고 있습니다.Jboss AS 7 - Dependency Injection

EJB jar와 war를 모두 포함하는 EAR을 설정했습니다.

war에는 richfaces 웹 앱이 포함되어 있습니다. 그러나

public class UserController { 

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

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

난 제이 보스 콘솔에서 오류를두고 배포 :

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) 

임은 얼굴에 EJB 항아리에서 EJB를 주입하려고하면 아래의 코드와 관리 Bean 도와주세요!

+0

당신은 IDE에서 그것을 실행하고 있습니까? 그렇다면 서버 twistie를 확장하고 두 파일이 실제로 배포되었는지 확인하십시오. 전쟁 파일 같은 것이 없습니다. 또한 언제이 오류가 발생합니까? 서버를 시작할 때? – Shahzeb

+0

'UserFacadeService'와'UserFacadeBean'의 주석에 대한 더 많은 정보를 제공 할 수 있습니까? – Thor

답변

1

WAR에는 정의 된 EJB jar에 대한 종속성이없는 것으로 보입니다. EJB 항아리 파일에 대해 WAR의 META-INF/MANIFEST.MF 클래스 패스 항목을 정의하는 것이 가장 좋습니다.

구성 파일을 확인하고 <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");