У меня есть этот EJB
@Stateless
public class HelloBean{
public String sayHello(){
return "hello";
}
}
Когда я тестирую с этим модульным тестом:
@Test
public void testEmbeddedPersistence() throws NamingException {
assertTrue(true);
Map<String, Object> props = new HashMap<String, Object>();
props.put(EJBContainer.MODULES, new File("target/classes"));
props.put("org.glassfish.ejb.embedded.glassfish.instance.root", "./src/test/resources/glassfish-testing-domain");
ec = EJBContainer.createEJBContainer(props);
ctx = ec.getContext();
String s = "java:global/classes/HelloBean";
HelloBean helloBean = (HelloBean) ctx.lookup(s);
assertNotNull(helloBean);
assertABunchOfStuff();
ec.close();
}
все отлично работает.
Но когда я изменяю его на
@Stateless
public class HelloBean implements RemoteHello{
public String sayHello(){
return "hello";
}
}
@Remote
public interface RemoteHello{
public String sayHello();
}
@Test
public void testEmbeddedPersistence() throws NamingException {
assertTrue(true);
Map<String, Object> props = new HashMap<String, Object>();
props.put(EJBContainer.MODULES, new File("target/classes"));
props.put("org.glassfish.ejb.embedded.glassfish.instance.root", "./src/test/resources/glassfish-testing-domain");
ec = EJBContainer.createEJBContainer(props);
ctx = ec.getContext();
String s = "java:global/classes/HelloBean!com.mycompany.remoteInterface.RemoteHello";
RemoteHello remoteHello = (RemoteHello) ctx.lookup(s);
assertNotNull(remoteHello);
assertABunchOfStuff();
ec.close();
}
Я получаю исключение javax.naming.NamingException
Самое странное, что когда EJBContainer начинает, он говорит:
ИНФОРМАЦИЯ: EJB5181: Переносимые имена JNDI для EJB HelloBean: [java: global / classes / HelloBean! Com.mycompany.remoteInterface.RemoteHello, java: global / classes / HelloBean]
10 февраля 2012 15:55:22 com.sun.ejb.containers.BaseContainer initializeHome
вскоре после этого:
Тесты по ошибке:
testEmbeddedPersistence (com.mycompaony.HelloBean): не удалось выполнить поиск для 'java: global / classes / HelloBean! com.mycompany.remoteInterface.RemoteHello' в SerialContext [myEnv = {java.naming.factory.initial = com.sun.enterprise.naming .impl.SerialInitContextFactory, java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs = com.sun.enterprise.naming}
Как получить успешный поиск jndi с помощью удаленного интерфейса.
Спасибо