Универсальный драйвер JDBC DB2 не поддерживает соединения типа 4 с базами данных DB2 для VM/VSE. В разделах руководства Руководство по разработке прикладных программ: |Программирование клиентских прикладных программ (Application Development Guide: |Programming Client Applications) и информационного центра DB2 UDB "Настройка |среды Java в Windows" (Setting up the Windows Java environment) и "Установка |универсального драйвера JDBC DB2" (Installing the DB2 Universal JDBC |Driver) ошибочно указано, что универсальный драйвер JDBC DB2 поддерживает соединения типа 4 с базами данных DB2 для VM/VSE.
Программы Java, использующие для обращения к серверам DB2 UDB for z/OS(R) Соединения универсального драйвера JDBC DB2 типа 4, могут использовать преимущества функций концентратора соединений и балансировки рабочей нагрузки Sysplex универсального драйвера JDBC DB2.
Эти функции аналогичны функциям концентратора соединений и балансировки рабочей нагрузки Sysplex для DB2 Connect.
Концентратор соединений универсального драйвера JDBC DB2 может снизить требования к ресурсам серверов баз данных DB2 UDB for z/OS(R) для поддержки большого числа клиентских прикладных программ благодаря использованию для объектов соединений одного и того же физического соединения, что позволяет уменьшить общее число физических соединений с сервером баз данных.
Балансировка рабочей нагрузки Sysplex универсального драйвера JDBC DB2 может повысить доступность группы совместного использования данных, поскольку этот драйвер позволяет часто получает информацию о состоянии элементов в группе совместно используемых данных. Драйвер использует эту информацию для определения элемента совместно используемых данных, в который следует маршрутизировать следующую транзакцию. При помощи балансировки рабочей загрузки Sysplex сервер DB2 UDB for z/OS и WLM for z/OS (Workload Manager - менеджер рабочей нагрузки) гарантируют эффективное распределение работы по элементам группы совместно используемых данных, а при сбое одного из элементов - передачу работы другому элементу группы.
Универсальный драйвер JDBC DB2 использует для поддержки концентратора соединений и балансировки рабочей нагрузки Sysplex транспортные объекты и глобальный пул транспортных объектов. Для каждого соединения с сервером баз данных существует один транспортный объект. При включении поддержки концентратора соединений и балансировки рабочей нагрузки Sysplex надо задать максимальное число физических соединений с сервером баз данных, существующих одновременно, задав для этого максимальное число транспортных объектов.
На уровне драйвера нужно указать предельное число транспортных объектов в свойствах конфигурации универсального драйвера JDBC DB2.
На уровне соединений можно включить или отключить поддержку концентратора соединений и балансировки рабочей нагрузки Sysplex универсального драйвера JDBC DB2 и задать предельное число транспортных объектов при помощи свойств DataSource.
Глобальный пул транспортных объектов можно отслеживать одним из следующих способов:
Каждое из следующих свойств конфигурации используется для концентратора соединений и балансировки рабочей нагрузки Sysplex
В свойстве db2.jcc.dumpPool используется тип данных integer (int.). Перед записью каких-либо показателей статистики нужно также задать свойства конфигурации для записи статистики db2.jcc.dumpPoolStatisticsOnSchedule и db2.jcc.dumpPoolStatisticsOnScheduleFile.
При помощи свойства db2.jcc.dumpPool можно задать один или несколько типов статистических показателей:
Для трассировки нескольких типов событий сложите значения типов событий, которые нужно трассировать. Например, вы хотите трассировать события DUMP_GET_OBJECT и DUMP_CREATE_OBJECT. Числовые эквиваленты этих значений - 2 и 16, поэтому для db2.jcc.dumpPool нужно задать значение 18.
Значение по умолчанию 0 означает, что для глобального транспортного пула будет записываться только сводная статистика.
Значение по умолчанию (-1) означает, что статистические показатели глобального транспортного пула записываться не будут.
Если свойство конфигурации db2.jcc.dumpPoolStatisticsOnScheduleFile не задано, статистические показатели глобального транспортного пула не записываются.
По умолчанию для свойства конфигурации db2.jcc.maxTransportObjectIdleTime используется значение 60. Если для свойства db2.jcc.maxTransportObjectIdleTime задать значение меньше нуля, неиспользуемые транспортные объекты будут удаляться из пула немедленно. Это не рекомендуется, поскольку может привести к серьезному снижению производительности.
По умолчанию для свойства конфигурации db2.jcc.maxTransportObjectWaitTime используется значение -1. Любое отрицательное значение означает, что программы ожидают бесконечно долго.
По умолчанию для свойства конфигурации db2.jcc.maxTransportObjects используется значение -1, означающее отсутствие ограничения на число транспортных объектов в глобальном пуле транспортных объектов.
По умолчанию для свойства конфигурации the db2.jcc.minTransportObjects используется значение 0. Любое неположительное значение означает, что глобальный пул транспортных объектов может стать пустым.
Каждое из следующих свойств DataSource универсального драйвера JDBC DB2 используется для концентратора соединений и балансировки рабочей нагрузки Sysplex
В свойстве enableConnectionConcentrator используется тип данных boolean. Значение по умолчанию - false. Однако если для свойства enableSysplexWLB задано значение true, по умолчанию используется значение true.
В свойстве enableSysplexWLB используется тип данных boolean. Значение по умолчанию - false. Однако если для свойства enableSysplexWLB задано значение true, для свойства enableConnectionConcentrator по умолчанию используется значение true.
В этом свойстве используется тип данных integer (int.).
Если транспортный объект недоступен в глобальном пуле транспортных объектов, а значение свойства maxTransportObjects не достигнуто, пул создает новый транспортный объект. Если значение свойства maxTransportObjects достигнуто, программа ожидает в течение срока, задаваемого свойством конфигурации db2.jcc.maxTransportObjectWaitTime. Если по истечении этого срока в пуле все еще нет доступных транспортных объектов, пул генерирует исключительную ситуацию SQLException.
Свойство maxTransportObjects не переопределяет свойство конфигурации db2.jcc.maxTransportObjects. Свойство maxTransportObjects не влияет на соединения от других объектов DataSource. Если значение maxTransportObjects больше значения db2.jcc.maxTransportObjects, maxTransportObjects не увеличивает значение свойства db2.jcc.maxTransportObjects.
По умолчанию для свойства maxTransportObjects используется значение -1, означающее, что число транспортных объектов для DataSource ограничено только значением db2.jcc.maxTransportObjects для драйвера.
Следующая процедура - это пример включения функций концентратора соединений и балансировки рабочей нагрузки Sysplex универсального драйвера JDBC DB2 в WebSphere(R) Application Server.
Требования для сервера:
Требования для клиента:
Чтобы включить функции концентратора соединений и балансировки рабочей нагрузки Sysplex универсального драйвера JDBC DB2 в WebSphere Application Server:
java com.ibm.db2.jcc.DB2Jcc -versionНайдите в выводе такую строку:
[ibm][db2][jcc] Driver: IBM DB2 JDBC Universal Driver Architecture n nГде n должно быть 2.7 или новее.
Задайте свойства конфигурации в файле DB2JccConfiguration.properties.
db2.jcc.minTransportObjects=0 db2.jcc.maxTransportObjects=1500 db2.jcc.maxTransportObjectWaitTime=-1 db2.jcc.dumpPool=0 db2.jcc.dumpPoolStatisticsOnScheduleFile= /home/WAS/logs/srv1/poolstats
На консоли администратора WebSphere Application Server задайте для источника данных, используемого программой при соединении с сервером баз данных, следующие свойства:
Чтобы отслеживать функции концентратора соединений и балансировки рабочей нагрузки Sysplex универсального драйвера JDBC DB2, нужно отслеживать глобальный пул транспортных объектов. Глобальный пул транспортных объектов можно отслеживать одним из следующих способов:
Свойства конфигурации db2.jcc.dumpPool, db2.jcc.dumpPoolStatisticsOnSchedule и db2.jcc.dumpPoolStatisticsOnScheduleFile управляют трассировкой глобального пула транспортных объектов.
Например, при использовании следующего набора параметров свойств конфигурации сообщения об ошибках Sysplex и сообщения об ошибках пула дампа будут записываться каждые 60 секунд в файл /home/WAS/logs/srv1/poolstats:
db2.jcc.dumpPool=DUMP_SYSPLEX_MSG|DUMP_POOL_ERROR db2.jcc.dumpPoolStatisticsOnSchedule=60 db2.jcc.dumpPoolStatisticsOnScheduleFile=/home/WAS/logs/srv1/poolstats
Запись в файле статистики пула выглядит примерно так:
time Scheduled PoolStatistics npr:2575 nsr:2575 lwroc:439 hwroc:1764 coc:372 aooc:362 rmoc:362 nbr:2872 tbt:857520 tpo:10
Смысл полей:
Можно написать свои программы для сбора статистики по глобальному пулу транспортных объектов. Такие программы создают объекты в классе DB2PoolMonitor и вызывают методы для получения информации о пуле.
Например, следующий код создает объект для слежения за глобальным пулом транспортных объектов:
import com.ibm.db2.jcc.DB2PoolMonitor; DB2PoolMonitor transportObjectPoolMonitor = DB2PoolMonitor.getPoolMonitor (DB2PoolMonitor.TRANSPORT_OBJECT);
После создания объекта DB2PoolMonitor для слежения за глобальным пулом транспортных объектов можно применить следующие методы.
public int getMonitorVersion()
Получает версию класса DB2PoolMonitor, поставляемого с универсальным драйвером JDBC DB2.
public int totalRequestsToPool()
Получает общее число требований, выданных универсальным драйвером JDBC DB2 пулу с момента создания пула.
public int successfullRequestsFromPool()
Получает число успешных требований, выданных универсальным драйвером JDBC DB2 пулу с момента создания пула. Требование считается успешным, если пул возвратил объект.
public int numberOfRequestsBlocked()
Получает число требований, выданных пулу универсальным драйвером JDBC DB2, которые пул заблокировал из-за достижения своей максимальной емкости. Заблокированное требование может быть успешным, если объект возвратился в пул до того, как превышено значение конфигурации db2.jcc.maxTransportObjectWaitTime и сгенерирована исключительная ситуация.
public long totalTimeBlocked()
Получает общее время в миллисекундах для заблокированных пулом требований. Это время может быть значительно больше времени выполнения программы, если программа использует несколько потоков.
public int lightWeightReusedObjectCount()
Получает число объектов, использованных повторно, но отсутствовавших в пуле. Такое может произойти, если объект соединения освобождает транспортный объект в конце транзакции. Если объекту соединения позднее требуется транспортный объект и если исходный транспортный объект не использовался никаким другим объектом соединения, объект соединения может использовать этот транспортный объект.
public int heavyWeightReusedObjectCount()
Получает число объектов, использованных повторно из пула.
public int createdObjectCount()
Получает число объектов, созданных универсальным драйвером JDBC DB2 с момента создания пула.
public int agedOutObjectCount()
Получает число объектов, удаленных из пула после превышения времени простоя, заданного в свойстве конфигурации db2.jcc.maxTransportObjectIdleTime.
public int removedObjectCount()
Получает число объектов, удаленных из пула с момента его создания.
public int totalPoolObjects()
Число объектов, находящихся в текущий момент в пуле.
Ключевое слово OleDbReportIsLongForLongTypes поддерживается следующими серверами баз данных:
Механизм указателя клиента OLE DB и OLE DB .NET Data Provider's CommandBuilder генерируют операторы update и delete на основе информации о столбцах, которую сообщает IBM DB2 OLE DB Provider. Если сгенерированный оператор содержит тип LONG в условии WHERE, при выполнении этого оператора возникнет ошибка, так как типы LONG нельзя использовать в запросе поиска с операцией равенства. Если для ключевого слова OleDbReportIsLongForLongTypes задано значение 1, сообщая информацию о типах LONG (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC и LONG VARGRAPHIC FOR BIT DATA) IBM DB2 OLE DB Provider будет устанавливать флаг DBCOLUMNFLAGS_ISLONG. Это предотвращает использование длинных столбцов в условии WHERE.
Ключевое слово OleDbSQLColumnsSortByOrdinal поддерживается следующими серверами баз данных:
Спецификация Microsoft OLE DB требует, чтобы функция IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) возвращала набор строк, отсортированных по столбцам TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. IBM DB2 OLE DB Provider ведет себя в соответствии с этой спецификацией. Однако прикладные программы, использующие провайдер Microsoft ODBC Bridge (MSDASQL) обычно написаны таким образом, что им требуется набор строк, отсортированных по столбцу ORDINAL_POSITION. Если задать для ключевого слова OleDbSQLColumnsSortByOrdinal значение 1, провайдер будет возвращать набор строк, отсортированных по столбцу ORDINAL_POSITION.
Для IBM DB2 OLE DB Provider добавлена новая группа свойств: DB2 Data Source. Набор свойств для DB2 Data Source - DBPROPSET_DB2DATASOURCE.
GUID для этого набора свойств - {0x8a80412a,0x7d94,0x4fec,{0x87,0x3e,0x6c,0xd1,0xcd,0x42,0x0d,0xcd}}
DBPROPSET_DB2DATASOURCE содержит три свойства:
#define DB2PROP_REPORTISLONGFORLONGTYPES 4 Группа свойств: DB2 Data Source Набор свойств: DB2PROPSET_DATASOURCE Тип: VT_BOOL Типовой R/W: R/W Описание: Устанавливает флаг IsLong для длинных типов
Механизм указателя клиента OLE DB и OLE DB .NET Data Provider's CommandBuilder генерируют операторы update и delete на основе информации о столбцах, которую сообщает IBM DB2 OLE DB Provider. Если сгенерированный оператор содержит тип LONG в условии WHERE, при выполнении этого оператора возникнет ошибка, так как типы LONG нельзя использовать в запросе поиска с операцией равенства.
Значения | Описание |
---|---|
VARIANT_TRUE | При этом значении IBM DB2 OLE DB Provider, сообщая информацию о типах LONG (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC и LONG VARGRAPHIC FOR BIT DATA), устанавливает флаг DBCOLUMNFLAGS_ISLONG. Это предотвращает использование длинных столбцов в условии WHERE. |
VARIANT_FALSE | Флаг DBCOLUMNFLAGS_ISLONG не устанавливается для типов LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC и LONG VARGRAPHIC FOR BIT DATA. Это значение по умолчанию. |
#define DB2PROP_RETURNCHARASWCHAR 2 Группа свойств: DB2 Data Source Набор свойств: DB2PROPSET_DATASOURCE Тип: VT_BOOL Типовой R/W: R/W Описание: Возвращать символы как WChar
Значения | Описание |
---|---|
VARIANT_TRUE | OLE DB описывает столбцы типов CHAR, VARCHAR, LONG VARCHAR и CLOB как DBTYPE_WSTR. Кодовой страницей данных в ISequentialStream будет считаться UCS-2. Это значение по умолчанию. |
VARIANT_FALSE | OLE DB описывает столбцы типов CHAR, VARCHAR, LONG VARCHAR и CLOB как DBTYPE_STR. Кодовой страницей данных в ISequentialStream будет считаться локальная кодовая страница клиента. |
#define DB2PROP_SORTBYORDINAL 3 Группа свойств: DB2 Data Source Набор свойств: DB2PROPSET_DATASOURCE Тип: VT_BOOL Типовой R/W: R/W Описание: Сортировка по порядковому номеру.
Спецификация Microsoft OLE DB требует, чтобы функция IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) возвращала набор строк, отсортированных по столбцам TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. IBM DB2 OLE DB Provider ведет себя в соответствии с этой спецификацией. Однако прикладные программы, использующие провайдер Microsoft ODBC Bridge (MSDASQL) обычно написаны таким образом, что им требуется набор строк, отсортированных по столбцу ORDINAL_POSITION.
Значения | Описание |
---|---|
VARIANT_TRUE | Провайдер будет возвращать набор строк, отсортированных по столбцу ORDINAL_POSITION. |
VARIANT_FALSE | Провайдер будет возвращать набор строк, отсортированных по столбцам TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. Это значение по умолчанию. |
В теме "Установка универсального драйвера JDBC DB2" в синтаксической диаграмме DB2Binder неверно определен синтаксис URL для универсального драйвера JDBC DB2. Правильный синтаксис этого URL для DB2Binder показан на следующей диаграмме:
Возможность автоматического перенаправления клиента в DB2 Universal Database (UDB) для Linux, UNIX, и Windows позволяет клиентским прикладным программам восстанавливать работоспособность после потери связи с сервером, благодаря чему они могут продолжать работу после минимального перерыва.
При каждой блокировке сервера все соединенные с ним клиенты получают ошибку связи, которая прекращает соединение и приводит к ошибке прикладной программы. Для высокой доступности следует иметь резервную поддержку установки или восстановления после отказов. (Восстановление после отказов означает способность одного сервера принимать на себя операции при отказе другого сервера.) В любом случае клиент универсального драйвера JDBC DB2 попытается восстановить соединение с первоначальным сервером, который может работать на узле восстановления при отказах, или с новым сервером. После восстановления соединения прикладная программа получит сообщение об исключительной ситуации SQL, информирующее об ошибке транзакции, но сможет продолжить работу со следующей транзакции.
Когда администратор базы данных задал в экземпляре сервера положение альтернативного сервера для конкретной базы данных, положения первичного и альтернативного серверов возвращаются клиенту во время соединения. Универсальный драйвер JDBC DB2 создает экземпляр объекта DB2ClientRerouteServerList типа Referenceable и сохраняет его в своей временной памяти. При потере соединения универсальный драйвер JDBC DB2 пытается восстановить соединение, используя возвращенную с сервера информацию о серверах.
Свойство DataSource clientRerouteServerListJNDIName обеспечивает дополнительную поддержку перенаправления клиента прямо на клиенте; у свойства clientRerouteServerListJNDIName две функции:
Свойство clientRerouteServerListJNDIName задает ссылку JNDI на экземпляр DB2ClientRerouteServerList в репозитории JNDI с информацией об альтернативном сервере. После успешного соединения с первичным сервером полученная с него информация об альтернативном сервере перезаписывает информацию, содержавшуюся в clientRerouteServerListJNDIName. Если определено свойство clientRerouteServerListJNDIName, универсальный драйвер JDBC DB2 попытается передать обновленную информацию на склад JNDI при восстановлении после отказа. Если задано значение clientRerouteServerListJNDIName, для соединения будет использоваться информация о первичном сервере, заданная в DB2ClientRerouteServerList. Если первичный сервер не задан, будет использоваться информация serverName, заданная в источнике данных.
DB2ClientRerouteServerList - это последовательная функция bean Java с четырьмя свойствами:
Для доступа к этим свойствам определены методы получения и задания. Определение класса DB2ClientRerouteServerList:
package com.ibm.db2.jcc; public class DB2ClientRerouteServerList implements java.io.Serializable, javax.naming.Referenceable { public String[] alternateServerName; public synchronized void setAlternateServerName(String[] alternateServer); public String[] getAlternateServerName(); public int[] alternatePortNumber; public synchronized void setAlternatePortNumber(int[] alternatePortNumberList); public int[] getAlternatePortNumber(); public synchronized void setPrimaryServerName (String primaryServerName); public String getPrimaryServerName (); public synchronized void setPrimaryPortNumber (int primaryPortNumber) public int getPrimaryPortNumber (); }
Новое соединение, установленное при восстановлении после отказа, конфигурируется с исходными свойствами источника данных, за исключением имени сервера и номера порта. Кроме того, когда универсальный драйвер JDBC DB2 выполняет восстановление после отказа, восстанавливаются и все специальные регистры DB2 UDB, которые были изменены во время исходного соединения.
При отказе соединения универсальный драйвер JDBC DB2 сначала пытается восстановить соединение с первичным сервером. Если это не удается, драйвер пытается соединиться с альтернативным положением (восстановление после отказа). После восстановления соединения, драйвер передает прикладной программе объект исключительной ситуации java.sql.SQLException с кодом SQLCODE -4498, указывая прикладной программе, что соединение было заново установлено с альтернативным сервером. Прикладная программа может повторить транзакцию.
Чтобы сконфигурировать постоянное хранение DB2ClientRerouteServerList:
// Создать начальный контекст для задания имен InitialContext registry = new InitialContext(); // Создать объект DB2ClientRerouteServerList DB2ClientRerouteServerList address=new DB2ClientRerouteServerList(); // Задать номер порта и имя сервера для первичного сервера address.setPrimaryPortNumber(50000); address.setPrimaryServerName("mvs1.sj.ibm.com"); // Задать номер порта и имя сервера для альтернативного сервера int[] port = {50002}; String[] server = {"mvs3.sj.ibm.com"}; address.setAlternatePortNumber(port); address.setAlternateServerName(server); registry.rebind("serverList", address);
datasource.setClientRerouteServerListJNDIName("serverList");
Свойства конфигурации универсального драйвера JDBC DB2 позволяют задавать значения свойств, действующих на уровне драйвера. Эти параметры применяются прикладными программами и экземплярами DataSource. Эти параметры можно изменить, не изменяя исходный код прикладной программы и характеристики DataSource.
Параметры свойств конфигурации универсального драйвера JDBC DB2 задаются в следующем формате:
свойство=значение
Если свойство конфигурации начинается с db2.jcc.override, оно применимо ко всем соединениям и переопределяет все одноименные свойства Connection и DataSource. Если свойство конфигурации начинается с db2.jcc или db2.jcc.default, оно используется только по умолчанию. Параметры свойств Connection и DataSource переопределяют это значение.
Чтобы задать свойства конфигурации:
Для автономных программ Java параметры конфигурации можно задать как системные свойства Java, задав -Dсвойство=значение для каждого свойства конфигурации при выполнении команды java.
Для автономных программ Java параметры конфигурации можно задавать как опцию -Ddb2.jcc.propertiesFile=путь при выполнении команды java.
DB2JccConfiguration.properties может быть автономным файлом или входить в файл JAR.
Если DB2JccConfiguration.properties - автономный файл, путь к DB2JccConfiguration.properties должен быть включен в CLASSPATH.
Если DB2JccConfiguration.properties - часть файла JAR, файл JAR должен быть задан в CLASSPATH.
Можно задать следующие свойства конфигурации универсального драйвера JDBC DB2. Все свойства необязательные.
Задайте полное имя файла в качестве значения свойства db2.jcc.override.traceFile.
Свойство db2.jcc.override.traceFile переопределяет свойство traceFile для объекта Connection или DataSource.
Например, если задать db2.jcc.override.traceFile, как показано ниже, в универсальном драйвере JDBC DB2 будет включена трассировка кода Java в файл с именем /SYSTEM/tmp/jdbctrace:
db2.jcc.override.traceFile=/SYSTEM/tmp/jdbctrace
Свойства трассировки следует задавать под руководством службы программной поддержки IBM.
Функция db2secFreeToken (Освободить память, удерживаемую маркером) больше не входит в API модуля аутентификации пользователя db2secGssapiServerAuthFunctions_1.
Целостность установки DB2 Universal Database (UDB) может быть нарушена при внедрении модулей защиты, которые неверно написаны или недостаточно проверены и протестированы. DB2 UDB предпринимает меры предосторожности против многих типичных ошибок, но не может гарантировать полного сохранения целостности при внедрении пользовательских модулей защиты.
Если вы используете свои пользовательские модули защиты, можно использовать ID пользователя до 255 символов в операторе соединения, передаваемый через CLP или динамический оператор SQL.
Для интерфейсов API db2secGetGroupsForUser, db2secValidatePassword и db2secGetAuthIDs входной параметр dbname может быть пустым, и соответствующий входной параметр длины dbnamelen будет равен 0.
В настоящее время для библиотек написанных пользователями модулей защиты на всех платформах Linux и UNIX принято расширение .so.
В AIX библиотеки модулей защиты могут иметь расширение .a или .so. Если в библиотеке существуют обе версии модулей, используется версия .a.
Для HP-UX в PA-RISC библиотеки модулей защиты могут иметь расширение .sl или .so. Если в библиотеке существуют обе версии модулей, используется версия .sl.
На всех остальных платформах Linux и UNIX для библиотек модулей защиты поддерживается только расширение имени файла .so.
В AIX библиотеки модулей защиты могут иметь расширение файла .a или .so. Механизм, используемый для загрузки библиотеки модулей, зависит от используемого расширения:
Например, для построения библиотеки модулей в стиле 32-битного архива введите:
xlc_r -qmkshrobj -o shr.o MyPlugin.c -bE:MyPlugin.exp ar rv MyPlugin.a shr.o
xlc_r -qmkshrobj -o MyPlugin.so MyPlugin.c -bE:MyPlugin.exp
На всех платформах, кроме AIX, библиотеки модулей защиты всегда считаются динамически загружаемыми совместно используемыми объектами.
| | |Начиная с выпуска DB2 UDB Версии 8.2 для Linux, UNIX и Windows, появилась |возможность создавать собственные механизмы аутентификации в виде подключаемых модулей (загружаемых библиотек). Механизм DB2 UDB загружает подключаемые модули и использует их для аутентификации пользователей. Чтобы обеспечить поддержку пользовательских программ, написанных на Java, |универсальный драйвер JDBC DB2 поддерживает подключаемые модули защиты, начиная с DB2 UDB Версии 8.2 FixPak 4.
|Для прикладных программ Java, использующих подключаемый модуль аутентификации |при помощи универсального драйвера JDBC DB2, пользователи должны реализовать |собственный подключаемый модуль, расширив абстрактный класс |com.ibm.db2.jcc.DB2JCCPlugin и задав следующие свойства:
|Обратите внимание на следующий пример:
|java.util.Properties properties = new java.util.Properties(); | properties.put("user", "db2admin"); | properties.put("password", "admindb2"); | properties.put("pluginName", "gssapi_simple"); | properties.put("securityMechanism", | new String(""+com.ibm.db2.jcc.DB2BaseDataSource.PLUGIN_SECURITY+"")); | properties.put("plugin", new JCCSimpleGSSPlugin()); | Connection con = java.sql.DriverManager.getConnection(url, properties);
При аутентификации GSS-API передаются один маркер с клиента на сервер и один маркер с сервера на клиент. Эти маркеры получаются из gss_init_sec_context() на клиенте и из gss_accept_sec_context() на сервере. Если модули GSS-API попытаются создать дополнительные потоки, возникнет непредвиденная ошибка модуля защиты и соединение не будет установлено.
Шифрование и подпись сообщений недоступны в модулях защиты GSS-API.
Независимо от операционной системы при любом завершении программы (нормальном и аварийном) неявно выполняется откат незавершенных единиц работы.
В документе Что нового для DB2 Universal Database (UDB) Версии 8.2 в разделе Усовершенствование универсального драйвера JDBC DB2 приведена неверная информация о поддержке распределенных транзакций. Последнее предложение этого раздела неверно. Вот правильный вариант:
В DB2 UDB Версии 8.2 обеспечивает поддержку обработки распределенных транзакций в соответствии со спецификацией XA. Эта поддержка реализует спецификации Java 2 Platform Enterprise Edition (J2EE) Java Transaction Service (JTS) и Java Transaction API (JTA).
[ Начало страницы |Страница назад | Страница вперед | Содержание ]