2013-03-28 3 views
1

Как я знал, Java ServletContext и объекты контекста широко используются в разработке Java EE. Однако я не совсем уверен в различиях между ними, особенно в отношении использования классов контекста.Разница между javax.servlet.ServletContext и javax.naming.Context

Из того, что я понял, ServletContext является объектом, который содержит все инициализации, считанные из Web.xml, чтобы все сервлеты в веб-приложении могли делиться этими глобальными конфигурациями.

С другой стороны, я обычно использовал только контекстный объект, когда мне нужно было динамически устанавливать соединение с базой данных с помощью поиска JNDI. Кроме того, я не знаю о других возможных применениях этого класса.

Моя главная проблема заключается в том, что «контекстное» слово классов ServletContext и Context представляет собой одно и то же или компонент внутри веб-приложения?

+0

Что такое этот класс Context? Вы имеете в виду javax.naming.Context? – DiogoSantana

+0

Да, Уважаемый DiogoSantana, я имел в виду класс javax.naming.Context – ShadowScorpion

+1

Связанный: [Что такое Контекст в Java?] (Http://stackoverflow.com/questions/3918083/what-exactly-is-a-context- in-java) – BalusC

ответ

3

От ServletContext javadoc

Определяет набор методов, которые использует сервлет для связи со своим контейнером сервлетов, например, чтобы получить тип MIME файла, запросы о доставке, или написать к журнальный файл.

В основном это аксессор к среде сервлетов. Все, что имеет отношение к сервлету, вы можете получить оттуда. Это действительно полезно только с контейнером сервлетов.

JNDI Context javadoc

Этот интерфейс представляет собой контекст именования, который состоит из набора имя-объекта привязки. Он содержит методы для проверки и , обновляющие эти привязки.

Это интерфейс к ресурсу. Вы настраиваете ресурс с помощью некоторого идентификатора, который вы можете получить через этот интерфейс. Вы не ограничены этим использованием только в контейнере сервлетов. Например, вы можете сохранить список подключенных устройств в своей сети в репозитории LDAP. Чтобы получить доступ к этому репозиторию, вы можете написать собственный код, реализующий протокол и взаимодействующий с сервером LDAP, или вы можете использовать класс LdapContext, который реализует класс Context. Или вы можете использовать его для поиска JDBC DataSource.

Не позволяйте факту, что они имеют одно и то же имя, беспокоят вас. У них разные цели.

This answer может оказать помощь, когда вы видите Context в другом контексте.

+0

Дорогой SD, благодарю вас за ваш обмен. Японял твою точку зрения. Можете ли вы дополнительно объяснить некоторые другие применения класса Context, как вы упомянули, это не ограничивается использованием только в контейнере сервлета? – ShadowScorpion

+0

@ShadowScorpion Добавил два примера ресурсов, к которым вы могли получить доступ. Есть еще много. –

+0

Я бы не сказал «несчастный». Это просто типичный суффикс для классов, соответствующих шаблону дизайна фасада. – BalusC