连接到正在运行的JBoss AS7实例以进行测试

时间:2013-05-13 18:08:56

标签: jboss java-ee-6 ejb-3.1

当我运行硒测试时,我已经有了集成测试阶段。我也想在这个阶段运行一些单元测试,因为应用程序太复杂了,他的模块之间有很多依赖关系(地狱),所以,在与OpenEJB和Arquillian打了一个星期之后,我相信这将是更容易。

问题是:我如何使其发挥作用?

我已经运行了实例,如果我实例化一个InitialContext并尝试查找某个bean,我得到一个例外,告诉我我没有设置java.naming.initial.factory,我不知道该放什么那里。

我也在抱怨带注释的豆子。

假设这样的Bean:

@Stateless
public class ABeanImpl implements ABean {
  @EJB
  private BBean;
}

容器会自动转到BBean吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

如何连接到JBoss 7.1远程JNDI:

以下是我用于JBoss 7.1的代码片段:

Properties props = new Properties();
String JBOSS_CONTEXT = "org.jboss.naming.remote.client.InitialContextFactory";
props.put("jboss.naming.client.ejb.context", true);
props.put(Context.INITIAL_CONTEXT_FACTORY, JBOSS_CONTEXT);
props.put(Context.PROVIDER_URL, "remote://localhost:4447");
props.put(Context.SECURITY_PRINCIPAL, "jboss");
props.put(Context.SECURITY_CREDENTIALS, "jboss123");
InitialContext ctx = new InitialContext(props);

解决模棱两可的ejb引用:

根据JBoss EJB 3 reference,如果EJB环境的任何级别(EJB / EAR / Server)在使用的接口中都是重复的,则在注入bean的解析期间将抛出异常。

基于上面的内容,如果你有一个EJB bean的引用接口:

  • 在您的EJB模块(JAR / WAR)中有两个实现 - 将抛出异常
  • 在您的应用程序中有两个实现(同一个EAR中的其他EJB JAR) - 将抛出异常
  • 有两个实现,一个在模块中,bean ABeanImpl ,第二个在其他地方 - 使用当前模块的实现。