PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

tomcat 7 conjunto de conexões JDBC - conjunto separado para cada banco de dados?


Ok, eu fiz algumas pesquisas e descobri isso sozinho. (Obrigado pelas muitas pessoas gentis na lista de discussão tomcat-users!)

JB Nizet está certo:se você estiver criando pools de conexão de banco de dados Tomcat a partir de código Java, cada DataSource que você instanciar é/representará literalmente um pool de conexão separado. Isso foi surpreendente para mim; vindo de um plano de fundo .NET, presumi que o pool de conexões do Tomcat funcionaria como o pool de conexões SqlServer/ADO.NET:se você usar duas cadeias de conexão idênticas para obter duas conexões de banco de dados, ambas virão do mesmo pool de conexões. No entanto, no Tomcat, ao instanciar objetos DataSource a partir do código Java, cada nova instância DataSource é um conjunto de conexões totalmente novo. Portanto, se você deseja persistir esses pools de conexão em chamadas de serviço da Web JAX-RS, por exemplo, você precisa criar seu próprio cache de pool de banco de dados (DataSource), colocar as instâncias de DataSource (uma por banco de dados) nele e armazená-lo em um objeto que o JAX-RS persistirá nas chamadas de serviço da web. Acabei de fazer isso, e está funcionando bem.

btw, o pool de conexão de banco de dados Tomcat oferece funcionalidade semelhante ao pool de conexão SqlServer/ADO.NET, você só precisa usar recursos JNDI para criar suas instâncias de DataSource. (No meu caso, isso não é uma opção, pois os bancos de dados são criados dinamicamente no meu aplicativo e as definições JNDI geralmente são criadas a partir de arquivos de configuração que o Tomcat lê na inicialização.)