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 integration-test 时会出现以下异常

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

有人可以帮我解决这个问题吗?是否有可能使用本地 Bean 进行集成测试(maven 项目使用故障安全插件)?

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 项目中的 EJB maven 插件和其他一些资源,例如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 回答