Сегодня мне представили это исключение
Caused by: javax.naming.NamingException: Unable to acquire SerialContextProvider for SerialContext [Root exception is java.lang.NullPointerException]
at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:276)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:430)
... 23 more
Я пытался получить удаленный доступ к ejb, код ошибки был
Context c = new InitialContext();
Я уже видел это исключение и исправил его, ноне мог вспомнить точно, как я это сделал.Я знал, что мне нужно было установить некоторые переменные среды для исходного, контекстного URL-адреса и поставщика услуг или чего-то подобного.
Фактически мне удалось найти код, который я использовал для исправления этой проблемы в прошлый раз, когда он у меня был,это выглядит следующим образом.
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
env.put(Context.PROVIDER_URL, "localhost:1099");
Context c = new InitialContext(env);
Мой вопрос заключается в следующем: как узнать, какую исходную фабрику контекста использовать?Я написал модуль ejb для нашей базы данных, который работает на glassfish v3, и ни разу не получил никаких намеков на то, что, конечно, мне следует использовать com.sun.enterprise.naming.SerialInitContextFactory
, я имею в виду, что он настолько очевиден.Кто делает эти фабрики контекста?Кто решает, какой я должен использовать и почему?Почему нет списка, показывающего, какой из них необходим для разных целей?Кажется, что кто-то старался изо всех сил сделать самый непробиваемый и загадочный способ доступа к ресурсу, который по-человечески возможен.Или я что-то здесь совершенно неправильно понял, или мне не хватает огромного объема знаний.
Я был бы очень признателен за некоторое понимание этого предмета.
Спасибо всем.