使用EJB的Junit - EJBException:无法使用工厂[]实例化容器

时间:2014-01-04 23:37:58

标签: junit ejb jboss7.x

我是EJB的新手。

我正在尝试使用JBoss 7.1测试一个简单的EJB项目。但测试抛出异常:

  

javax.ejb.EJBException:无法使用工厂实例化容器   [] at javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBCont   ainer.java:97)at   javax.ejb.embeddable.EJBContainer.createEJBContainer(EJBCont   ainer.java:75)在com.pack.HelloTest.test(HelloTest.java:17)at at   sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(未知来源)at   sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)at   java.lang.reflect.Method.invoke(未知来源)at   org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(   FrameworkMethod.java:47)at   org.junit.internal.runners.model.ReflectiveCallable.run(REFL   ectiveCallable.java:12)at   org.junit.runners.model.FrameworkMethod.invokeExplosively(FR   ameworkMethod.java:44)at   org.junit.internal.runners.statements.InvokeMethod.evaluate(   InvokeMethod.java:17)at   org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)at at   org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit   4ClassRunner.java:70)at   org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit   4ClassRunner.java:50)at   org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:238)at   org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:63)at at   org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)at at   org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:53)at at   org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:229)at at   org.junit.runners.ParentRunner.run(ParentRunner.java:309)at at   org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.r   un(JUnit4TestReference.java:50)at   org.eclipse.jdt.internal.junit.runner.TestExecution.run(测试   Execution.java:38)at   org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe   sts(RemoteTestRunner.java:467)at   org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe   sts(RemoteTestRunner.java:683)at   org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(R   emoteTestRunner.java:390)at   org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(   RemoteTestRunner.java:197)

这是测试:

package com.pack;

import static org.junit.Assert.*;

import java.util.Date;

import javax.ejb.embeddable.EJBContainer;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import org.junit.Test;

public class HelloTest {

    @Test
    public void test() throws NamingException {
         EJBContainer container = EJBContainer.createEJBContainer(); // line 17, throws javax.ejb.EJBException

          // Note that global naming isn't working yet.
          InitialContext ctx = new InitialContext();
          Hello bean = (Hello) ctx.lookup("HelloBean/local");

          String now = new Date().toString();
          String actual = bean.sayHello(now);

          assertEquals("Hello " + now, actual);

          container.close();
    }
}

Project有一个bean HelloBean:

package com.pack;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;

/**
 * Session Bean implementation class HelloBean
 */
@Stateless
public class HelloBean implements Hello {

    public String sayHello(String name) {
        return "Hello " + name;
    }

}

这是界面Hello:

package com.pack;

public interface Hello {
    String sayHello(String name);
}

你能告诉我如何解决这个错误吗?

0 个答案:

没有答案