Conjunto de Conexões
Utilizar conjuntos de conexões ajuda a aliviar a sobrecarga do gerenciamento de conexões e diminuir as tarefas de desenvolvimento para o acesso a dados.
Cada vez que um aplicativo tenta acessar um armazenamento de backend (como um banco de dados), ele requer recursos para criar, manter e liberar uma conexão com esse datastore. Para reduzir o esforço, este processo pode estabelecer os recursos de aplicativo completamente, o Application Server permite que os administradores estabeleçam um conjunto de conexões de backend que os aplicativos podem compartilhar em um servidor de aplicativos. O Conjunto de Conexões espalha o código extra de conexão por meio de vários pedidos de usuários, preservando os recursos do aplicativo para pedidos futuros.
O servidor de aplicativos suporta APIs do JDBC 4.0 para conjunto de conexões e reutilização de conexão. O conjunto de conexões é utilizado para orientar as chamadas JDBC no aplicativo, bem como para enterprise beans que utilizam o banco de dados.
Benefícios do Pool de Conexão
O pool de conexão pode melhorar o tempo de resposta de qualquer aplicativo que precise de conexões, especialmente os aplicativos baseados na Web. Quando um usuário faz uma solicitação de um recurso através da Web, o recurso acessa uma origem de dados. Como os usuários conectam-se e desconectam-se frequentemente dos aplicativos na Internet, os pedidos do aplicativos para acesso a dados podem aumentar para um volume considerável. Consequentemente, o código extra total do datastore torna-se rapidamente elevado para aplicativos com base na Web e o desempenho é deteriorado. No entanto, quando recursos de definição do conjunto de conexões são usados, os aplicativos da Web podem realizar melhorias de desempenho de até 20 vezes os resultados normais.
Com o pool de conexão, a maioria dos pedidos de usuários não incorrem na sobrecarga de criar uma nova conexão porque a origem de dados pode localizar e utilizar uma conexão existente do pool de conexões. Quando o pedido é atendido e a resposta é retornada ao usuário, o recurso retorna a conexão para o pool de conexão para ser reutilizada. O código extra de uma desconexão é evitado. Cada pedido de usuário incorre em uma fração do custo de conectar-se ou desconectar-se. Depois de os recursos serem utilizados para produzir as conexões do conjunto, a sobrecarga é insignificante, pois as conexões existentes são reutilizadas.
Quando Utilizar Pool de Conexão
Utilize o conjunto de conexões em um aplicativo que atenda a qualquer dos seguintes critérios:
- Não pode tolerar a sobrecarga de obter e liberar conexões sempre que uma conexão é utilizada.
- Ele exige transações JTA (Java™ Transaction API) dentro do Application Server.
- Necessita compartilhar conexões entre vários usuários dentro da mesma transação.
- Necessita tirar vantagem de recursos do produto para gerenciar transações locais dentro do servidor de aplicativos.
- Não gerencia os conjuntos de suas próprias conexões.
- Não gerencia os detalhes de criar uma conexão, tais como o nome do banco de dados, o nome do usuário ou a senha

Como as Conexões São Colocadas em Conjunto
Quando você configura uma única origem de dados ou uma connection factory, deve fornecer um nome exclusivo JNDI (Java Naming and Directory Interface). Esse nome JNDI, juntamente com as informações sobre configuração, é utilizado para criar o conjunto de conexões. Existe um conjunto de conexões separado para cada origem de dados ou connection factory configurada.
Se você executar um cluster de três servidores em que todos os servidores usam myDataSource, e myDataSource tiver a configuração de Máximo de Conexões como 10, você poderá gerar até 30 conexões (três servidores vezes 10 conexões).
Em um cluster, três controladores z/OS contêm cada um três empregados que utilizam myDataSource e para o conjunto de conexões que o Application Server cria para cada instância de myDataSource, é possível definir um valor de Máximo de Conexões igual a 10. Portanto, é possível gerar até 90 conexões (9 servants vezes 10 conexões).
Considere como esse comportamento potencialmente impacta o número de conexões que seu recurso de backend pode suportar. Consulte o tópico Configurações de Conjunto de Conexões para obter mais informações.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
- Cada transação do bean de entidade requer uma conexão adicional com o banco de dados, dedicada a manipular a transação.
- Se clones forem utilizados, um conjunto de dados existirá para cada clone.
Nos sistemas UNIX suportados, um processo DB2 separado é criado para cada conexão; esses processos afetam rapidamente o desempenho dos sistemas com pouca memória e causam erros.
É importante observar também que, ao utilizar o compartilhamento de conexões, só é possível compartilhar conexões obtidas a partir do mesmo conjunto de conexões.