4

Mavenプロジェクトがあり、EARサブモジュールの統合テストを試してみたいと思います。統合テストサブモジュールでは、次のことを行います。

Properties env;
Context ctx;

env = new Properties();

env.setProperty( "java.naming.factory.initial", "org.jboss.naming.remote.client.InitialContextFactory");

env.setProperty(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
env.setProperty( "java.naming.provider.url", "remote://localhost:4447");
env.put(Context.SECURITY_PRINCIPAL, "jboss-user");
env.put(Context.SECURITY_CREDENTIALS, "*******");
ctx = new InitialContext( env );


IBMPFacadeRemote bmpFacade = ( IBMPFacadeRemote ) ctx.lookup( "ejb:DeDomain-ejb-1.0-SNAPSHOT/BMPFacade!de.domain.service.IBMPFacadeRemote");
bmpFacade.executeBMPProcess( model1, model2);//model1 & model2 are some entities

問題:mvn統合テストを呼び出すと、次の例外が発生します

java.lang.ClassCastException: org.jboss.ejb.client.naming.ejb.EjbNamingContext cannot be cast to de.domain.service.IBMPFacadeRemote

誰かが私にこの問題を解決するのを手伝ってもらえますか?ローカルBeanを使用してこれを統合テストする可能性はありますか(Mavenプロジェクトはfailsafe-pluginを使用します)?

4

2 に答える 2

0

何が問題を正確に解決したかを正確に言うのは今では難しいですが、問題を解決したすべての変更について言及しようと思います。

  1. pom.xmlに依存関係を追加しました

    <dependency>
        <groupId>org.jboss.as</groupId>
        <artifactId>jboss-as-ejb-client-bom</artifactId>
        <version>7.1.1.Final</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>org.jboss.as</groupId>
        <artifactId>jboss-as-jms-client-bom</artifactId>
        <version>7.1.1.Final</version>
        <type>pom</type>
    </dependency>
    
  2. JNDIルックアップを次のように変更しました(EAR&EJBプロジェクトのデプロイ名を変更した後)

    IBMPFacadeRemote bmpFacade = ( IBMPFacadeRemote ) ctx.lookup( "ejb:DeDomain-ear/DeDomain-ejb//BMPFacadeBean!de.domain.service.IBMPFacadeRemote");
    
  3. EJBプロジェクトおよびその他のリソースからEJBMavenプラグインを削除しました。jndi.properties

おそらく言及する価値があるのは、Propertiesインスタンスが質問で述べられたものと同じままだったことです。

于 2013-02-18T17:49:11.057 に答える
-1

JNDIプロパティは私には奇妙に見えます。私は常にJBossの次のプロパティで成功しました:

java.naming.provider.url=jnp://localhost:1099
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
jnp.socket.Factory=org.jnp.interfaces.TimedSocketFactory

たぶんあなたはそれらを再確認する必要があります。

于 2013-02-11T09:09:17.560 に答える