我是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);
}
你能告诉我如何解决这个错误吗?