DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Коммуникационный стек JDBC

Предположим, что вы разрабатываете Java-приложение, которое должно
соединяться с базой данных Oracle для вставки, обновления, удаления
получения информации. В таком приложении можно использовать один из двух типов драйверов JDBC. Во-первых, можно написать приложение        или приложение тонкого клиента, используя
Java или серверы приложений Java соответственно, а во-вторых — написать приложение с использованием Java-апплетов.
Если вы остановитесь на варианте клиент/сервер или тонком клиенте, то потребуется драйвер JDBC/OCI. Этот драйвер преобразует JDBC-код в вызовы которые передаются серверу базы данных Oracle средствами Net8. Разработчики Java-апплетов должны использовать драйвер "тонкого" JDBC, чтобы устанавливать прямое соединение с сервером базы данных Oracle через сокеты Java. В этом случае для доступа к базе данных применяется упрощенная реализация уровней Net8 и Two-Task Common.
Если посмотреть на уровни клиентского коммуникационного стека JDBC/OCI, то можно заметить, что они очень на уровни стека PОР. Единственное различие — это клиентский интерфейс. В стеке ПОР верхний уровень обозначался просто как "прикладной", тогда как в стеке JDBC он разделен на три уровня, называемых клиентским прикладным стеком. Эти уровни перечислены в таблице 2.4. Способ их реализации зависит от того, как написано приложение — с использованием вызовов JDBC/OCI или "тонкого" JDBC.

Таблица 2.4.
Уровни клиентского прикладного стека JDBC

Уровень стека
Клиент JDBC
Описание
Прикладной Java-код
Драйвер JDBC
Драйвер JDBC/OCI или "тонкого" JDBC
Интерфейс доступа к базе
Механизм, используемый для инициирования SQL-сеансов
данных (DBAccess)
(во многом похож на интерфейс OCI)

В случае коммуникационного стека "тонкого" JDBC набор уровней будет совершенно другим. Уровни этого стека перечислены в таблице 2.5.
Как видно из таблицы 2.5, передача информации между клиентским и сервером осуществляется через несколько уровней протоколов, значительно отличающихся от стандартных коммуникационных уровней Oracle. Рассмотрим эти уровни по отдельности, чтобы лучше понять их роль в обработке запроса. Запомните, что для инициирования SQL-сеанса и в JDBC/OCI, и в "тонком" JDBC используется интерфейс DBAccess.
Уровень Java TTC Будучи подмножеством уровня Two-Task Common, уровень JavaTTC выполняет проверку и согласование версий протоколов, форматов данных и наборов символов, используемых Java-клиентом и сервером. После этого он обеспечивает фактическое выполнение SQL-оператора.
Уровень JavaNet Этот уровень разделен на три подуровня, функционально аналогичных уровням NR/NN/NA и TNS в Net8. Уровень коммуникационного интерфейса, подобно уровню стандартного стека Oracle, обеспечивает взаимодействие между JavaTTC и нижележащими сетевыми уровнями. Уровень службы адресации функционирует аналогично уровню NN стандартного стека Oracle, обрабатывая адреса назначения Net8. JavaNS (Java Network Substrate) — это аналог TNS. Он предоставляет универсальный интерфейс к TCP/IP, позволяющий открывать/закрывать соединения и отправлять/принимать сообщения, а определяет следующее:
Местонахождение сервера назначения
Протоколы, требуемые для установления соединения
Способ обработки прерываний между клиентом и сервером (в зависимости от возможностей каждой стороны)
Уровень сетевого протокола   Этот уровень разделен на два подуровня: Java (обеспечивающие связь с JavaNS) и TCP/IP.
Java могут работать только поверх TCP/IP, а следовательно, TCP/IP — единственный сетевой протокол, доступный в данной конфигурации.
Хотя на стороне клиента, использующего Java-апплеты, коммуникационный стек значительно отличается от стандартного стека Oracle, серверный стек в этом случае остается таким же, как показано в таблице 2.1. Дело в том, что на выходе стека "тонкого" JDBC запрос имеет такой же вид, как и все другие запросы, принимаемые сервером через Net8.
 









jAntivirus