【发布时间】:2014-03-04 09:20:19
【问题描述】:
我有这种情况:
- 企业应用程序。运行正常。 --> 包含 MyFacade
- 客户端应用程序。运行正常。
- Ejb 模块。运行正常,但无法测试 --> 包含 MyClass.java
- 域库。 --> 包含实体和远程接口。
我想运行第 3 点的测试文件。(ejb 模块)。好的,首先我让企业应用程序运行。在第二位,我运行第 3 点的测试文件。 问题是找不到企业应用程序中包含的远程接口ejb。
错误 1:它以以下输出的无限循环结束
WARNING: AS-CDI-005 Okt 22, 2013 4:49:23 PM org.glassfish.weld.BeanDeploymentArchiveImpl handleEntry
错误 1:已解决 Running JUnit Tests on embedded glassfish 4 causing WARNING: AS-CDI-005
错误2!!!:
javax.naming.NamingException: Lookup failed for [...] (MyFacade)
Ejb 模块:MyClass.java
@Singleton
public class MyClass implements MyClassLocal {
@EJB(lookup = "java:global/EnterpriseApplication-ejb/MyFacade!com.mydomain.repository.MyFacadeRemote")
private MyFacadeRemote myFacade;
public MyClass() {
}
public void bussinesMethod(){
System.out.println("Hello stackOverWorld! ");
myFacade.findAll();
}
}
测试方法:
@Test
public void testBusinessMethod() throws Exception {
System.out.println("businessMethod");
Map<Object, Object> properties = new HashMap<Object, Object>();
properties.put(EJBContainer.APP_NAME, "MyEjbModule");
properties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
EJBContainer container = EJBContainer.createEJBContainer(properties);
MyClassLocal instance = (MyClassLocal)container.getContext().lookup("java:global/MyEjbModule/classes/MyClass!com.mydomain.MyClassLocal");
//EJBContainer container = javax.ejb.embeddable.EJBContainer.createEJBContainer();
//MyClassLocal instance = (MyClassLocal)container.getContext().lookup("java:global/classes/MyClass");
instance.businessMethod();
container.close();
}
【问题讨论】:
标签: java jakarta-ee junit glassfish ejb