Программная модель для доступа к источникам данных следующая.
1. Приложение получает объект DataSource из пространства имен JNDI.
2. После получения объекта DataSource, код приложения вызывает функцию
getConnection() источника данных для получения объекта Connection. Соединение извлекается из пула соединений.
3. Получив соединение, приложение посылает SQL-запросы или обновляет базу данных.
Наряду с поддержкой источников данных приложениями J2EE 1.3 и J2EE 1.4, также поддерживаются источники данных J2EE 1.2. Эти два вида поддержки отличаются способом работы с соединениями. Однако с точки зрения приложений они выглядят одинаково.
Поддержка источников данных
Основная поддержка источников данных ориентирована на приложения J2EE 1.3 и J2EE 1.4. Работу с пулом соединений обеспечивают два компонента — JCA Connection Manager и адаптер реляционных ресурсов.
JCA Connection Manager обеспечивает работу с пулами соединений, поддержку локальных транзакций и безопасность.
Адаптер реляционных ресурсов предлагает оболочки для JDBC и реализацию JCA CCI, позволяющую BMP и JDBC-приложениям, а также CMP-компонентам обращаться к базе данных.
На рис. 6.3 показана модель адаптера реляционных ресурсов.
В WebSphere Application Server есть адаптер ресурсов для сохранения данных (Persistence Resource Adapter), который предоставляет службы реляционного хранения данных для EJB-компонентов, а также обеспечивает доступ к базам данных для BMP и JDBC-приложений. Persistence Resource Adapter содержит два компонента: Persistence Manager (менеджер хранения), который поддерживает модель сохранения данных EJB CMP, и Relational Resource Adapter (адаптер реляционных ресурсов). Код Relational Resource Adapter содержится в следующих пакетах Java:
• com.ibm.ws.rsadapter.cci содержит реализацию CCI и оболочки JDBC.
• com.ibm.ws.rsadapter.spi содержит реализацию SPI.
• com.ibm.ws.rsadapter.jdbc содержит все оболочки JDBC.
• com.ibm.websphere.rsadapter содержит DataStoreHelper, WSCallerHelper и DataAccessFunctionSet.
Relational Resource Adapter – это система, используемая Persistence Manager для обработки доступа к данным в серверном хранилище в обоих направлениях, и предоставляющая службы реляционного хранения EJB-компонентам. Реализация основывается на спецификации J2EE Connector (JCA) и реализует интерфейсы JCA CCI и SPI.
Когда приложение использует источник данных, источник данных использует для доступа к реляционной базе архитектуру коннектора JCA.
В случае EJB последовательность будет следующая.
1. EJB-компонент выполняет поиск в JNDI фабрики соединений источника данных и направляет запрос getConnection().
2. Фабрика соединений делегирует запрос менеджеру соединений.
3. Менеджер соединений находит экземпляр пула соединений на сервере приложений. Если пул соединений отсутствует, то менеджер с помощью объекта ManagedConnectionFactory создает физическое, не связанное с пулом соединение.
Источник данных версии 4
WebSphere Application Server V4 предлагает свой собственный менеджер соединений JDBC для работы с пулами соединений и с доступом к JDBC. Эта поддержка включена и в WebSphere Application Server V6 для обеспечения работы с приложениями J2EE 1.2.
Если приложение выбирает использование источника данных версии 4, то поведение при соединении будет таким же, как в версии 4 сервера приложений.
Используйте источник данных версии 4 в следующих ситуациях.
• Приложения J2EE 1.2.
Все EJB-компоненты, JDBC-приложения и сервлеты версии 2.2 должны использовать источник данных версии 4.
• Модули EJB 1.x с дескриптором размещения 1.1.
Все эти элементы должны использовать источник данных версии 4.