Подтвердить что ты не робот

Что означает "javax.naming.NoInitialContextException"?

Как видно из названия, что означает "javax.naming.NoInitialContextException" означает в нетехнических терминах? И каковы некоторые общие рекомендации по его устранению?

EDIT (из консоли):

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
    at javax.naming.InitialContext.lookup(InitialContext.java:392)
    at cepars.app.ConnectionHelper.getConnection(ConnectionHelper.java:25)
    at cepars.app.ConnectionHelper.getConnection(ConnectionHelper.java:10)
    at cepars.review.ReviewDAO.getJobList(ReviewDAO.java:30)
    at cepars.review.Test.main(Test.java:43)
java.lang.NullPointerException
    at cepars.review.ReviewDAO.getJobList(ReviewDAO.java:31)
    at cepars.review.Test.main(Test.java:43)
cepars.app.DAOException
    at cepars.review.ReviewDAO.getJobList(ReviewDAO.java:39)
    at cepars.review.Test.main(Test.java:43)
4b9b3361

Ответ 1

В основном это означает, что приложение хочет выполнить некоторые "операции именования" (например, JNDI или LDAP-запросы), и у него не было достаточной информации, чтобы иметь возможность создать соединение с сервером каталогов. Как документы для состояния исключения,

Это исключение бросается, когда нет первоначальная реализация контекста может быть создано. Политика как первоначального контекстная реализация выбрана описанных в документации Класс InitialContext.

И если вы послушно взгляните на javadocs на InitialContext, они довольно хорошо описывают, как создается исходный контекст, и каковы ваши варианты для поставки адрес/учетные данные /etc.

Если вы хотите создать контекст и застрять в другом месте, отправьте сообщение, объяснив, что вы сделали до сих пор, и где вы сели на мель.

Ответ 2

Это означает, что исходный контекст отсутствует:)

Но серьезно люди, JNDI (javax.naming) - это поиск объектов или ресурсов из какого-либо каталога или поставщика. Чтобы что-то посмотреть, вам нужно где-то искать (это InitialContext). NoInitialContextException означает: "Я хочу найти номер телефона для Джона Смита, но у меня нет телефонной книги для просмотра".

Исходный текст может быть создан любым количеством способов. Это можно сделать вручную, например, создать соединение с сервером LDAP. Он также может быть настроен сервером приложений, внутри которого вы запускаете приложение. В этом случае контейнер (сервер приложений) уже предоставляет вам "телефонную книгу", через которую вы можете искать все, что делает сервер приложений. Это часто настраивается и распространяет способ перемещения этого типа конфигурации из реализации приложения в контейнер, где он может использоваться для всех приложений на сервере.

UPDATE: из фрагмента кода, который вы публикуете, похоже, что вы пытаетесь запустить автономный код, предназначенный для запуска на сервере приложений. В этом случае код пытается получить соединение с базой данных из "телефонной книги". Это один из ресурсов, который часто настраивается в контейнере сервера приложений. Таким образом, вместо того, чтобы управлять конфигурацией и подключениями к базе данных в вашем коде, вы можете настроить ее на своем сервере приложений и попросить просить соединение (используя JNDI) в вашем коде.

Ответ 3

Просто прочитайте документы:

Это исключение бросается, когда нет первоначальная реализация контекста может быть создано. Политика как первоначального контекстная реализация выбрана описанных в документации Класс InitialContext.

Это исключение можно любое взаимодействие с InitialContext не только тогда, когда Исходныйконтекст построен. Для Например, реализация исходный контекст может лениво получить контекст только тогда, когда фактические методы вызывается на нем. Приложение не должны иметь никакой зависимости от того, когда существование исходного контекста определяется.

Но это объясняется намного лучше в документах для InitialContext

Ответ 4

В крайне нетехнических терминах это может означать, что вы забыли поставить "ejb:" или "jdbc:" или что-то в самом начале URI, который вы пытаетесь подключить.