O DB2 Universal JDBC Driver não suporta a conectividade tipo 4 com bancos de dados DB2 |para VM/VSE. Os tópicos "Setting up the Windows Java environment" |e "Installing the DB2 Universal JDBC Driver" no Application |Development Guide: Programming Client Applications e no DB2 UDB Information |Center afirmam incorretamente que o DB2 Universal JDBC Driver suporta a conectividade tipo |4 com bancos de dados DB2 para VM/VSE.
Aplicativos Java que utilizem Conectividade do Driver JDBC tipo 2 do DB2 Universal para acessar DB2 UDB para servidores z/OS(R) podem tirar vantagem das funções do seu centralizador de conexão e do balanceamento da carga de trabalho Sysplex.
Essas funções são semelhantes às funções do centralizador de conexão e do balanceamento da carga de trabalho Sysplex do DB2 Connect.
O centralizador de conexão DB2 Universal JDBC Driver pode reduzir os recursos que os servidores de banco de dados DB2 UDB para z/OS(R) solicitam para suportar números grandes de aplicativos clientes, permitindo que vários objetos de conexão utilizem a mesma conexão física, a qual reduz o número total de conexões físicas com o servidor de banco de dados.
O balanceamento da carga de trabalho Sysplex DB2 Universal JDBC Driver pode aprimorar a disponibilidade de um grupo de compartilhamento de dados porque o driver obtém informação de status freqüente sobre os membros de um grupo de compartilhamento de dados. O driver utiliza essa informação para determinar o membro de compartilhamento de dados para o qual a próxima transação deve ser roteada. Com o balanceamento de carga de trabalho Sysplex, o servidor DB2 UDB para z/OS e o WLM para z/OS (Workload Manager) asseguram-se de que o trabalho seja distribuído eficientemente entre os membros do grupo de compartilhamento de dados e que esse trabalho seja transferido para outro membro de um grupo de compartilhamento de dados caso um dos membros tenha uma deficiência.
O DB2 Universal JDBC Driver utiliza objetos de transporte e um conjunto de objetos de transporte global para suportar o centralizador de conexão e o balanceamento da carga de trabalho Sysplex. Há um objeto de transporte para cada conexão física para o servidor de banco de dados. Ao ativar o balanceamento do centralizador de conexão e da carga de trabalho Sysplex, você configura um número máximo de conexões físicas para o servidor de banco de dados em qualquer momento, configurando o número máximo de objetos de transporte.
No nível driver, você configura limites para o número de objetos de transporte, utilizando as propriedades de configuração DB2 Universal JDBC Driver.
No nível de conexão, você ativa e desativa o balanceamento do centralizador de conexão DB2 Universal JDBC Driver e da carga de trabalho Sysplex, além de configurar limites para o número de objetos de transporte, utilizando as propriedades DataSource.
Você pode escolher qualquer uma das maneiras a seguir para monitorar o conjunto de objetos de transporte:
Cada uma das propriedades de configuração a seguir é utilizada para o balanceamento do centralizador de conexão e da carga de trabalho Sysplex
O tipo de dados de db2.jcc.dumpPool é inteiro (int.). As propriedades de configuração de db2.jcc.dumpPoolStatisticsOnSchedule e de db2.jcc.dumpPoolStatisticsOnScheduleFile também devem ser configuradas como estatísticas de gravação antes que qualquer estatística seja gravada.
É possível especificar um ou mais dos seguintes tipos de estatísticas com a propriedade db2.jcc.dumpPool:
Para rastrear mais de um tipo de evento, inclua os valores para os tipos de eventos que você queira rastrear. Por exemplo, suponha que você queira rastrear eventos DUMP_GET_OBJECT e DUMP_CREATE_OBJECT. Os equivalentes numéricos desses valores são 2 e 16, então você especifica 18 para o valor db2.jcc.dumpPool.
O padrão é 0, o que significa que apenas estatísticas de resumo para o conjunto de transporte global são gravadas.
O padrão é -1, o que significa que as estatísticas do conjunto de transporte global não foram gravadas.
Se a propriedade de configuração db2.jcc.dumpPoolStatisticsOnScheduleFile não for especificada, as estatísticas do conjunto de transporte global não serão gravadas.
O valor padrão para a propriedade de configuração db2.jcc.maxTransportObjectIdleTime é 60. A configuração de db2.jcc.maxTransportObjectIdleTime como um valor menor que 0 faz com que os objetos de transporte não utilizados sejam excluídos do conjunto imediatamente. Essa ação não é recomendada porque ela pode causar grave degradação de desempenho.
O valor padrão para a propriedade de configuração db2.jcc.maxTransportObjectWaitTime é -1. Qualquer valor negativo significa que os aplicativos esperam o tempo todo.
O valor padrão para a propriedade de configuração de db2.jcc.maxTransportObjects é -1, o que significa que não há limite para o número de objetos de transporte no conjunto de objetos de transporte global.
O valor padrão para a propriedade de configuração de db2.jcc.minTransportObjects é 0. Qualquer valor menor ou igual a 0 significa que o conjunto de objetos de transporte global pode se tornar vazio.
Cada uma das seguintes propriedades de DataSource DB2 Universal JDBC Driver é utilizada para o balanceamento do centralizador de conexão e da carga de trabalho Sysplex
O tipo de dados da propriedade enableConnectionConcentrator é booleano. O padrão é false. Porém, se enableSysplexWLB for configurado como true, o padrão será true.
O tipo de dados da propriedade enableSysplexWLB é booleano. O padrão é false. Porém, se enableSysplexWLB for configurado como true, enableConnectionConcentrator será configurado como true por padrão.
O tipo de dados dessa propriedade é inteiro (int.).
Se o valor maxTransportObjects não tiver sido alcançado e um objeto de transporte não estiver disponível no conjunto de objetos de transporte, o conjunto cria um novo objeto de transporte. Se o valor maxTransportObjects tiver sido alcançado, o aplicativo espera a quantidade de tempo que é especificada pela propriedade de configuração db2.jcc.maxTransportObjectWaitTime. Após o tempo ter decorrido, se ainda não houver objeto de transporte disponível no conjunto, o mesmo emite um SQLException.
A propriedade maxTransportObjects não substitui a propriedade de configuração db2.jcc.maxTransportObjects. A propriedade maxTransportObjects não tem efeito em conexões de outros objetos DataSource. Se o valor maxTransportObjects for maior que o valor db2.jcc.maxTransportObjects, o maxTransportObjects não acrescenta o valor db2.jcc.maxTransportObjects.
O valor padrão para a propriedade maxTransportObjects é -1, o que significa que o número de objetos de transporte para o DataSource é limitado somente pelo valor db2.jcc.maxTransportObjects do driver.
O procedimento a seguir é um exemplo de ativação das funções de balanceamento do centralizador de conexão e da carga de trabalho Sysplex para DB2 Universal JDBC Driver com WebSphere(R) Application Server.
Requisitos do Servidor:
Requisitos do Cliente:
Para ativar as funções de balanceamento do centralizador de conexão e da carga de trabalho Sysplex para DB2 Universal JDBC Driver com WebSphere Application Server:
java com.ibm.db2.jcc.DB2Jcc -versionLocalize uma linha na saída como esta:
[ibm][db2][jcc] Driver: IBM DB2 JDBC Universal Driver Architecture n nn deve ser 2.7 ou mais recente.
Defina as propriedades de configuração no arquivo 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
No console administrativo WebSphere Application Server, configure as seguintes propriedades para a origem de dados que seu aplicativo utiliza para se conectar ao servidor de banco de dados:
Para monitorar as funções do centralizador de conexão e da carga de trabalho Sysplex DB2 Universal JDBC Driver, é necessário monitorar o conjunto de objetos de transporte global. Você pode escolher qualquer uma das maneiras a seguir para monitorar o conjunto de objetos de transporte:
O rastreio de controle das propriedades de configuração de db2.jcc.dumpPool, db2.jcc.dumpPoolStatisticsOnSchedule e db2.jcc.dumpPoolStatisticsOnScheduleFile do conjunto de objetos de transporte global.
Por exemplo, o conjunto a seguir de definições da propriedade de configuração ocasiona mensagens de erro Sysplex e mensagens de erro do conjunto de dump a serem gravadas a cada 60 segundos no arquivo /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
Uma entrada no arquivo de estatísticas do conjunto se parece com:
time Scheduled PoolStatistics npr:2575 nsr:2575 lwroc:439 hwroc:1764 coc:372 aooc:362 rmoc:362 nbr:2872 tbt:857520 tpo:10
Os significados dos campos são:
Você pode gravar aplicativos para reunir estatísticas no conjunto de objetos de transporte global. Esses aplicativos criam objetos na classe DB2PoolMonitor e chamam métodos para recuperar informação sobre o conjunto.
Por exemplo, o seguinte código cria um objeto para monitorar o conjunto de objetos de transporte global:
import com.ibm.db2.jcc.DB2PoolMonitor; DB2PoolMonitor transportObjectPoolMonitor = DB2PoolMonitor.getPoolMonitor (DB2PoolMonitor.TRANSPORT_OBJECT);
Após o objeto DB2PoolMonitor ser criado, você pode utilizar os seguintes métodos para monitorar o conjunto de objetos de transporte global.
public int getMonitorVersion()
Recupera a versão da classe DB2PoolMonitor que é enviada com o DB2 Universal JDBC Driver.
public int totalRequestsToPool()
Recupera o número total de pedidos feitos ao conjunto, desde a sua criação, pelo DB2 Universal JDBC Driver.
public int successfullRequestsFromPool()
Recupera o número de pedidos bem-sucedidos que o DB2 Universal JDBC Driver efetuou ao conjunto desde que este foi criado. Um pedido bem-sucedido significa que o conjunto retornou um objeto.
public int numberOfRequestsBlocked()
Recupera o número de pedidos que o DB2 Universal JDBC Driver realizou ao conjunto que o mesmo bloqueou porque a sua capacidade máxima foi atingida. Um pedido bloqueado pode ser bem-sucedido se um objeto for retornado ao conjunto antes que o valor de configuração do db2.jcc.maxTransportObjectWaitTime seja excedido e que uma exceção seja emitida.
public long totalTimeBlocked()
Recupera o tempo total em milissegundos dos pedidos que foram bloqueados pelo conjunto. Esse tempo pode ser muito maior que o tempo de execução decorrido do aplicativo se o aplicativo utilizar encadeamentos múltiplos.
public int lightWeightReusedObjectCount()
Recupera o número de objetos que foram reutilizados mas não estão no conjunto. Isto pode ocorrer se um objeto de conexão libera um objeto de transporte no limite da transação. Se o objeto de conexão precisar de um objeto de transporte mais tarde e o objeto de transporte original não foi utilizado por nenhum outro objeto de conexão, o objeto de conexão pode utilizar aquele objeto de transporte.
public int heavyWeightReusedObjectCount()
Recupera o número de objetos que foram reutilizados a partir do conjunto.
public int createdObjectCount()
Recupera o número de objetos que o DB2 Universal JDBC Driver criou desde que o conjunto foi criado.
public int agedOutObjectCount()
Recupera o número de objetos que excedeu o tempo inativo que foi especificado pela propriedade de configuração db2.jcc.maxTransportObjectIdleTime e foi excluído do conjunto.
public int removedObjectCount()
Recupera o número de objetos que foi excluído do conjunto desde que o conjunto foi criado.
public int totalPoolObjects()
O número de objetos que estão atualmente no conjunto.
A palavra-chave OleDbReportIsLongForLongTypes é suportada pelos servidores de banco de dados a seguir:
O mecanismo do cursor de cliente do OLE DB e o CommandBuilder do OLE DB .NET Data Provider geram instruções de atualização e exclusão com base nas informações da coluna fornecidas pelo IBM DB2 OLE DB Provider. Se a instrução gerada contiver um tipo LONG na cláusula WHERE, a instrução irá falhar porque os tipos LONG não podem ser utilizados em uma procura com um operador de igualdade. Definir a palavra-chave OleDbReportIsLongForLongTypes para 1 fará com que o IBM DB2 OLE DB Provider relate tipos LONG (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC e LONG VARGRAPHIC FOR BIT DATA) com o conjunto de sinalizadores DBCOLUMNFLAGS_ISLONG. Isso impedirá que as colunas longas sejam utilizadas na cláusula WHERE.
A palavra-chave OleDbSQLColumnsSortByOrdinal é suportada pelos servidores de banco de dados a seguir:
A especificação OLE DB da Microsoft requer que IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) retorne o conjunto de linhas classificado pelas colunas TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. O IBM DB2 OLE DB Provider está de acordo com a especificação. Porém, os aplicativos que utilizam o provedor Microsoft ODBC Bridge (MSDASQL) foram tipicamente codificados para obter o conjunto de linhas classificado pelo ORDINAL_POSITION. Definir a palavra-chave OleDbSQLColumnsSortByOrdinal para 1 fará com que o provedor retorne um conjunto de linhas classificado pelo ORDINAL_POSITION.
O IBM DB2 OLE DB Provider incluiu um novo grupo de propriedade: DB2 Data Source. O conjunto de propriedades para DB2 Data Source é DBPROPSET_DB2DATASOURCE.
O GUID para o conjunto de propriedades é {0x8a80412a,0x7d94,0x4fec,{0x87,0x3e,0x6c,0xd1,0xcd,0x42,0x0d,0xcd}}
DBPROPSET_DB2DATASOURCE tem três propriedades:
#define DB2PROP_REPORTISLONGFORLONGTYPES 4 Grupo de propriedades: DB2 Data Source Conjunto de propriedades: DB2PROPSET_DATASOURCE Tipo: VT_BOOL R/W típico: R/W Descrição: Relata IsLong para Tipos Longos
O mecanismo do cursor de cliente do OLE DB e o CommandBuilder do OLE DB .NET Data Provider geram instruções de atualização e exclusão com base nas informações da coluna fornecidas pelo IBM DB2 OLE DB Provider. Se a instrução gerada contiver um tipo LONG na cláusula WHERE, a instrução irá falhar porque os tipos LONG não podem ser utilizados em uma procura com um operador de igualdade.
Valores | Significado |
---|---|
VARIANT_TRUE | Fará com que o IBM DB2 OLE DB Provider relate tipos LONG (LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC e LONG VARGRAPHIC FOR BIT DATA) com o conjunto de sinalizadores DBCOLUMNFLAGS_ISLONG. Isso impedirá que as colunas longas sejam utilizadas na cláusula WHERE. |
VARIANT_FALSE | DBCOLUMNFLAGS_ISLONG não é definido para LONG VARCHAR, LONG VARCHAR FOR BIT DATA, LONG VARGRAPHIC e LONG VARGRAPHIC FOR BIT DATA. Este é o padrão. |
#define DB2PROP_RETURNCHARASWCHAR 2 Grupo de propriedades: DB2 Data Source Conjunto de propriedades: DB2PROPSET_DATASOURCE Tipo: VT_BOOL R/W típico: R/W Descrição: Retornar Char como WChar
Valores | Significado |
---|---|
VARIANT_TRUE | OLE DB descreve colunas do tipo CHAR, VARCHAR, LONG VARCHAR ou CLOB como DBTYPE_WSTR. A página de códigos de dados implicada em ISequentialStream será UCS-2. Este é o padrão. |
VARIANT_FALSE | OLE DB descreve colunas do tipo CHAR, VARCHAR, LONG VARCHAR ou CLOB como DBTYPE_STR. A página de códigos de dados implicada em ISequentialStream será a página de códigos local do cliente. |
#define DB2PROP_SORTBYORDINAL 3 Grupo de propriedades: DB2 Data Source Conjunto de propriedades: DB2PROPSET_DATASOURCE Tipo: VT_BOOL R/W típico: R/W Descrição: Classificar Por Ordinal
A especificação OLE DB da Microsoft requer que IDBSchemaRowset::GetRowset(DBSCHEMA_COLUMNS) retorne o conjunto de linhas classificado pelas colunas TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. O IBM DB2 OLE DB Provider está de acordo com a especificação. Porém, os aplicativos que utilizam o provedor Microsoft ODBC Bridge (MSDASQL) foram tipicamente codificados para obter o conjunto de linhas classificado pelo ORDINAL_POSITION.
Valores | Significado |
---|---|
VARIANT_TRUE | Fará com que o provedor retorne um conjunto de linhas classificado pelo ORDINAL_POSITION. |
VARIANT_FALSE | Fará com que o provedor retorne um conjunto de linhas classificado pelo TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. Este é o padrão. |
No tópico "Instalando o DB2 Universal JDBC Driver", o diagrama de sintaxe DB2Binder define incorretamente a sintaxe de URL para o DB2 Universal JDBC Driver. A representação correta da sintaxe de URL para DB2Binder é mostrada no diagrama a seguir:
O recurso de rovo roteamento de cliente automático no DB2 UDB (Universal Database) para Linux, UNIX, e Windows permite que os aplicativos clientes se recuperem de uma perda de comunicação com o servidor para que eles possam continuar a funcionar com interrupção mínima.
Sempre que um servidor trava, cada cliente conectado a ele recebe um erro de comunicação, que encerra a conexão e resulta em um erro de aplicativo. Quando a disponibilidade é importante, você deve ter uma configuração redundante e suporte a failover. (Failover é a capacidade de um servidor de tomar o controle de operações quando outro servidor falha). Em qualquer caso, o cliente do DB2 Universal JDBC Driver tenta restabelecer a conexão com um novo servidor ou com o servidor original, que pode estar em execução em um nó de failover. Quando a conexão é restabelecida, o aplicativo recebe uma SQLException que o informa sobre o defeito da transação, mas o aplicativo pode continuar com a próxima transação.
Depois que o administrador de banco de dados especifica a localização do servidor alternativo em um banco de dados particular na instância do servidor, as localizações do servidor principal e do alternativo serão retornadas ao cliente no momento da conexão. O driver DB2 Universal JDBC cria uma instância do objeto Referenciável DB2ClientRerouteServerList e armazena essa instância em sua memória temporária. Se a comunicação for perdida, o driver DB2 Universal JDBC tentará restabelecer a conexão utilizando as informações do servidor retornadas do servidor.
A propriedade clientRerouteServerListJNDIName DataSource fornece suporte adicional de novo roteamento de cliente no cliente; clientRerouteServerListJNDIName tem duas funções:
O clientRerouteServerListJNDIName identifica uma referência JNDI a uma instância DB2ClientRerouteServerList em um repositório JNDI para informações do servidor alternativo. Depois de uma conexão bem-sucedida com o servidor principal, as informações do servidor alternativo que são fornecidas pelo clientRerouteServerListJNDIName são sobrescritas pelas informações do servidor. O driver DB2 Universal JDBC tentará propagar as informações atualizadas para o armazenamento de JNDI depois de um failover se a propriedade clientRerouteServerListJNDIName for definida. Se clientRerouteServerListJNDIName for especificada, as informações do servidor principal especificadas no DB2ClientRerouteServerList serão utilizadas para conexão. Se o servidor principal não for especificado, as informações serverName especificadas sobre a origem de dados serão utilizadas.
DB2ClientRerouteServerList é um bean Java serializável com quatro propriedades:
São fornecidos os métodos getter e setter para acessar essas propriedades. A definição da classe DB2ClientRerouteServerList é a seguinte:
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 (); }
Uma conexão de failover estabelecida recentemente é configurada com as propriedades da origem de dados originais, exceto para o nome do servidor e o número da porta. Além disso, quaisquer registros especiais do DB2 UDB modificados durante a conexão original são restabelecidos na conexão de failover pelo driver DB2 Universal JDBC.
Quando ocorre um defeito de comunicação, o driver DB2 Universal JDBC primeiro tenta a recuperação para o servidor principal. Se isso falhar, o driver tentará se conectar à localização alternativa (failover). Depois que uma conexão é restabelecida, o driver lança uma java.sql.SQLException para o aplicativo com SQLCODE -4498, para indicar ao aplicativo que a conexão com o servidor alternativo foi automaticamente restabelecida. O aplicativo pode então tentar novamente sua transação.
Para configurar o armazenamento para tornar o DB2ClientRerouteServerList persistente, siga essas etapas:
// Criar um contexto inicial para operações de nomenclatura InitialContext registry = new InitialContext(); // Criar um objeto DB2ClientRerouteServerList DB2ClientRerouteServerList address=new DB2ClientRerouteServerList(); // Definir o número da porta e o nome do servidor para o servidor principal address.setPrimaryPortNumber(50000); address.setPrimaryServerName("mvs1.sj.ibm.com"); // Definir o número da porta e o nome do servidor para o servidor alternativo int[] port = {50002}; String[] server = {"mvs3.sj.ibm.com"}; address.setAlternatePortNumber(port); address.setAlternateServerName(server); registry.rebind("serverList", address);
datasource.setClientRerouteServerListJNDIName("serverList");
As propriedades de configuração do driver DB2 Universal JDBC permitem definir valores de propriedades que têm escopo em todo o driver. Estas definições se aplicam a aplicativos e instâncias DataSource. Você pode alterar as definições sem precisar alterar o código fonte do aplicativo ou as características do DataSource.
Cada definição de propriedade de configuração do driver DB2 Universal JDBC possui o seguinte formato:
property=value
Se a propriedade de configuração começar com db2.jcc.override, ela será aplicável a todas as conexões e substituirá qualquer propriedade Connection ou DataSource pelo mesmo nome de propriedade. Se a propriedade de configuração começar com db2.jcc ou com db2.jcc.default, o valor dela será um padrão. As definições da propriedade Connection ou DataSource substituem esse valor.
Para definir propriedades de configuração:
Para aplicativos Java independentes, você pode definir as propriedades de configuração como propriedades do sistema Java especificando -Dproperty=value para cada propriedade de configuração quando executar o comando java.
Para aplicativos Java independentes, você pode definir as propriedades de configuração especificando a opção -Ddb2.jcc.propertiesFile=path quando executar o comando java.
DB2JccConfiguration.properties pode ser um arquivo independente ou pode ser incluído em um arquivo JAR.
Se DB2JccConfiguration.properties for um arquivo independente, o caminho para DB2JccConfiguration.properties deverá estar na concatenação de CLASSPATH.
Se DB2JccConfiguration.properties estiver e um arquivo JAR, o arquivo JAR deverá estar na concatenação de CLASSPATH.
É possível definir as seguintes propriedades de configuração do driver DB2 Universal JDBC. Todas as propriedades são opcionais.
Especifique um nome completo de arquivo para o valor da propriedade db2.jcc.override.traceFile.
A propriedade db2.jcc.override.traceFile substitui a propriedade traceFile para um objeto Connection ou DataSource.
Por exemplo, a especificação da seguinte definição para db2.jcc.override.traceFile ativa o rastreio do código Java do DB2 Universal JDBC Driver para um arquivo denominado /SYSTEM/tmp/jdbctrace:
db2.jcc.override.traceFile=/SYSTEM/tmp/jdbctrace
É necessário definir as propriedades de rastreio de acordo com as instruções do Suporte ao Software IBM.
A função db2secFreeToken (Memória livre mantida retida por token) não faz mais parte da API do plug-in de autenticação do usuário db2secGssapiServerAuthFunctions_1.
A integridade da instalação do DB2 UDB (Universal Database) poderá ser comprometida se a implementação dos plug-ins de segurança não for adequadamente codificada, revisada e testada. O DB2 UDB toma precauções contra muitos tipos comuns de defeitos, mas não pode garantir a integridade completa quando plug-ins de segurança gravados pelo usuário são implementados.
Se estiver utilizando seu próprio plug-in de segurança personalizado, você poderá utilizar um ID do usuário com até 255 caracteres em uma instrução connect emitida através do CLP ou uma instrução SQL dinâmica.
Para as APIs db2secGetGroupsForUser, db2secValidatePassword e db2secGetAuthIDs, o parâmetro de entrada, dbname, pode ser nulo e seu parâmetro de entrada de comprimento correspondente, dbnamelen, será definido como 0.
.so é, agora, aceito como uma extensão de nome de arquivo para bibliotecas de plug-in de segurança gravadas pelo usuário em todas as plataformas Linux e UNIX.
No AIX, as bibliotecas do plug-in de segurança podem ter uma extensão de .a ou .so. Se existirem as duas versões da biblioteca de plug-ins, será utilizada a versão .a.
Para HP-UX no PA-RISC, as bibliotecas de plug-ins de segurança podem ter uma extensão .sl ou .so. Se existirem as duas versões da biblioteca de plug-ins. será utilizada a versão .sl.
Em todas as outras plataformas Linux e UNIX, .so é a única extensão de nome de arquivo suportada para bibliotecas do plug-in de segurança.
No AIX, as bibliotecas do plug-in de segurança podem ter uma extensão de nome de arquivo de .a ou .so. O mecanismo utilizado para carregar a biblioteca de plug-ins depende da extensão utilizada:
Por exemplo, para construir uma biblioteca de plug-ins de estilo de archive de 32 bits:
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
Em todas as plataformas diferentes de AIX, as bibliotecas do plug-in de segurança são sempre consideradas objetos compartilhados dinamicamente carregáveis.
| | |Com o release do DB2 UDB Versão 8.2 para Linux, UNIX, Windows, você pode criar |seus próprios mecanismos de autenticação em forma de plug-ins (bibliotecas |carregáveis). O mecanismo do DB2 UDB carrega e acessa estes plug-ins para desempenhar autenticação do usuário. Para suportar aplicativos de cliente gravados em |Java, o DB2 Universal JDBC Driver fornece suporte a plug-ins de segurança no DB2 UDB |V8.2, FixPak 4.
|Para aplicativos Java que utilizam o DB2 Universal JDBC Driver para desempenhar autenticação de plug-in, |os usuários precisam implementar seu próprio plug-in, estendendo a classe abstrata |com.ibm.db2.jcc.DB2JCCPlugin e configurando as seguintes propriedades:
|Observe o seguinte exemplo:
|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);
A autenticação GSS-API é limitada a enviar fluxo de um token do cliente para o servidor e um token do servidor para o cliente. Esses tokens são obtidos de gss_init_sec_context() no cliente e de gss_accept_sec_context() no servidor. Os plug-ins GSS-API que estão tentando fluxos adicionais irão gerar um erro inesperado de plug-in de segurança, fazendo com que a conexão falhe.
A criptografia e a assinatura de mensagens não estão disponíveis em plug-ins de segurança GSS-API.
Os encerramentos de aplicativos (normais e anormais) revertem implicitamente unidades de trabalho pendentes, independentemente do sistema operacional.
Na documentação das novidades para o DB2 UDB (Universal Database) Versão 8.2, as informações de suporte à transação distribuídas para a seção de aprimoramentos do driver DB2 Universal JDBC possuem informações incorretas. A última frase dessa seção está incorreta. As informações corretas são:
A partir da Versão 8.2, o DB2 UDB fornece suporte ao processamento de transações distribuídas que está de acordo com a especificação XA. Esse suporte implementa as especificações do J2EE (Java 2 Platform, Enterprise Edition) JTS (Java Transaction Service) e JTA (Java Transaction API).
[ Início da Página |Página Anterior | Próxima Página | Índice ]