2011-09-15 14 views
1

私はJboss AS 7で依存性注入を利用しようとしていますが、大きな問題があります。Jboss AS 7 - 依存性注入

私は、EJB jarとwarの両方を含むEARをセットアップしました。

warにはrichfaces web appが含まれています。しかし

public class UserController { 

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

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

iは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) 

Imが面内のEJB JARからEJBを注入しようとすると、以下のコードでBeanを管理しました手伝ってください!

+0

あなたがIDEからそれを実行していますか?はいの場合は、サーバーのtwistieを展開し、両方が実際に展開されているかどうかを確認します.WSファイルのようなものはありません。また、このエラーが発生したときに、サーバーを起動しますか? – Shahzeb

+0

'UserFacadeService'と' UserFacadeBean'のアノテーションの詳細を提供できますか? – Thor

答えて

1

あなたのWARには、定義されたEJB jarの依存性がない可能性があるようです。 EJB jarファイルに対して、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を持って、そしてラインの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");