Пожалуйста, смотрите код ниже:
try {
//InitialContext ic = new InitialContext();
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.enterprise.naming.SerialInitContextFactory");
Context ctx = new InitialContext(env);
MySessionRemote hb = (MySessionRemote) ctx.lookup("MySessionRemote");
System.out.println(hb.getResult());
} catch (NamingException ex) {
ex.printStackTrace();
}
Ошибка, которую я получаю из приложения Swing: :(javax.naming.NoInitialContextException) javax.naming.NoInitialContextException: Cannot instantiate class: com.sun.enterprise.naming.SerialInitContextFactory [Root exception is java.lang.ClassNotFoundException: com.sun.enterprise.naming.SerialInitContextFactory]
Я некоторое время не работал с Java, так что это может быть довольнопростой.
Обновление
Я использую версию 4.1 Glassfish. Я добавил ссылки на следующие jar-файлы внутри проекта NetBeans:
appserv-rt.jar
gf-client.jar
javaee.jar
Теперь я могу получить InitialContext. Тем не менее, я не могу искать bean-компонент, т.е. эта строка завершается ошибкой:
MySessionRemote hb = (MySessionRemote) ctx.lookup("ejb.MySessionRemote");
Исключением является NamingException
, т.е. Lookup Failed
. Я считаю, что имя бобов может быть неправильным. Вот бин:
пакет ejb;
import javax.annotation.Resource;
import javax.ejb.Remote;
@Resource(name = "MySessionRemote")
@Remote
public interface MySessionRemote {
public String getResult();
}
Каким должно быть имя бина?