2017-08-09 19 views
1

ArquillianをWildFly 10で使用する方法については、誰でも教えてください。私は最近JBoss 7からWildFly 10へアプリケーションを移行しました.ArquillianはJBoss 7で動作していましたが、 「:グローバル/ XYZ/xyzEMFactorは、Java」次のエラーで失敗している:ArquillianとWildFlyの統合10

WildFly 10上に、私はしかし、今JNDI名を持つ私のEJBを統合することができる午前私のクラスには、次の

Caused by: java.lang.Exception: {"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.naming.context.java.module.test.test.env.\"com.xyz.abc.poc.knowledge_ba‌​se.ontology.DBContex‌​tBean\".emFactory is missing [jboss.naming.context.java.global.xyz_dal.xyzpEMFactory‌​]"]} at org.jboss.as.controller.client.helpers.standalone.impl.Serve‌​rDeploymentPlanResul‌​tFuture.getActionRes‌​ult(ServerDeployment‌​PlanResultFuture.jav‌​a:134)

です:

@AccessTimeout(5 * 60 * 60 * 1000) 
@StatefulTimeout(-1) 
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) 
public class DBContextBean<T> { 
    @Inject 
    @EJB(lookup = "java:global/xyz_dal/xyzEMFactory") 
    private xyzEMFactory emFactory; 
} 
+0

あなたがテストしたarquillian.xmlファイルと遭遇しているエラーを表示する必要があります –

+0

これは大きな変化です。例えば、CDIは全く異なる仕様です。 Wildfly 10で同じWARを実行しようとしましたが、動作しているかどうか確認しましたか? – lordofthejars

答えて

0

私はjarファイルを作成して、テスト可能なwarファイル、ので、それはそれは私が

@Deployment(name = "xyz_dal", order = 3) 
public static Archive<?> createDeployment() { 
    WebArchive jar = ShrinkWrap.create(WebArchive.class, "xyz_dal.war") 
      .addClasses(xyzpEMFactory.class, DBContextBean.class, xyzDao.class) 
      .addPackages(true, "com.xyz.abc.poc.entities") 
      .addAsResource("test-persistence.xml", "META-INF/persistence.xml") 
      .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml").setManifest(new Asset() { 
       @Override 
       public InputStream openStream() { 
        // dependency management 
        return ManifestBuilder.newInstance() 
          .addManifestHeader("Dependencies", "xyz,javax.api,deployment.abc_common.jar") 
          .openStream(); 
       } 
      }); 
    return jar; 
} 

にそれを変更したときに、私がテスト可能に作成していた時だからだった働いた

@Deployment(name = "xyz_dal", order = 3) 
public static Archive<?> createDeployment() { 
    JavaArchive jar = ShrinkWrap.create(JavaArchive .class, "xyz_dal.jar") 
      .addClasses(xyzEMFactory.class, DBContextBean.class, xyzDao.class) 
      .addPackages(true, "com.xyz.abc.poc.entities") 
      .addAsResource("test-persistence.xml", "META-INF/persistence.xml") 
      .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml").setManifest(new Asset() { 
       @Override 
       public InputStream openStream() { 
        // dependency management 
        return ManifestBuilder.newInstance() 
          .addManifestHeader("Dependencies", "xyz,javax.api,deployment.abc_common.jar") 
          .openStream(); 
       } 
      }); 
    return jar; 
} 

、通りでしたjarの場合、コンテナはjarをtest.warにラップするため、コンテキスト "java:global/xyz/xyzEMFactory"は使用できませんでした。

0

これはJBoss7ではどのように動作するのか分かりませんが、@EJBか@Injectのどちらかが@Injectと思われますが余計です。私の経験では、不明瞭なコンストラクトを見ると、wildflyはjboss7よりも厳しい場合があります。

@Inject 
@EJB(lookup = "java:global/xyz_dal/xyzEMFactory") 
xyzEMFactory emFactory; 

CDIはejbsを挿入できません。私たちは時々やっていることは次のとおりです。

@Produces 
@EJB(lookup = "java:global/xyz/xyzEMFactory") 
xyzEMFactory emFactory; 

のejb-注入さBeanがプロデューサー・フィールドとして使用することができますので、その後、あなたが他の場所

@Inject 
xyzEMFactory emFactory; 

で使用することができます。

関連する問題