E aí pessoal, que pool de conexões é melhor utilizar, o da jakarta, o quem vem junto com o java ou outro???
Alguém já testou essas e outras opções e pode me passar qual foi a impressão???
E aí pessoal, que pool de conexões é melhor utilizar, o da jakarta, o quem vem junto com o java ou outro???
Alguém já testou essas e outras opções e pode me passar qual foi a impressão???
[quote=“TedLoprao”]E aí pessoal, que pool de conexões é melhor utilizar, o da jakarta, o quem vem junto com o java ou outro???
Alguém já testou essas e outras opções e pode me passar qual foi a impressão???[/quote]
Eu já utilizei o pool de conexões do jakarta e do Sun ONE Application Server 7, fique com o pool do Jakarta que é free, o S1AS você tem que pagar.
Digo que estou satisfeito com o pool Jakarta em meu projeto de faculdade (que é para WEB) e minha impressão (que nada é certeza ) é que é bom/rápido/escalável
Eu estou utilizando o Oracle com DB, por isso já estou aproveitando uma implementação de pool que a própria Oracle oferece. Mas pelo que ouvi falar o DBCP da Jakarta é muito bom…
Gustavo Guilherme BacK
Gostaria de saber em que parte do site do jakarta eu acho esse pool, qualo nome do projeto…
tentei achar mais não consegui…
abraços,
Renato.
Só lembrando que o pool de conexões do Sun ONE Application Server 7 é embutido dentro dele e não pode ser utilizado fora dele (no que eu conheço).
Eu acho que cada Application Server tem o seu próprio pool de conexões, já vi a Bani comentando que utilizava o do Websphere.
eu tenho aki o WebSphere App Server…
como faco p/ acessar o Pool de conexoes dele??
ele eh mais robusto do q o Sun One e o tomcat??
tava pensando em migrar p/ ele…
o q acham??
valew
[quote=“renatodemiguel”]Gostaria de saber em que parte do site do jakarta eu acho esse pool, qualo nome do projeto…
tentei achar mais não consegui…
abraços,
Renato.[/quote]
http://jakarta.apache.org/commons/dbcp/
Só lembrando que se você tem o Tomcat, esse pool vem junto com ele, tem até manual para configuração do mesmo.
Olá Douglas estou usando o Pool do Livro Core e Servlets mas queria
utilizar o do Jakarta. Você pode dar um exemplo mais claro do que o do site.
ou seja uma classe pegando a conexão do pool e devolvendo a mesma e
etc…???
valeu
Isto aqui deve te ajudar…
http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jndi-datasource-examples-howto.html
[quote=“André JVM”]Olá Douglas estou usando o Pool do Livro Core e Servlets mas queria
utilizar o do Jakarta. Você pode dar um exemplo mais claro do que o do site.
ou seja uma classe pegando a conexão do pool e devolvendo a mesma e
etc…???
valeu[/quote]
O exemplo em : http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jndi-datasource-examples-howto.html já serve, vou lhe explicar :
Esse trecho :
DataSource ds =
(DataSource)ctx.lookup(
"java:comp/env/jdbc/TestDB");
Recupera um DataSource (uma interface), que é uma fonte de dados, na verdade ele retorna um PoolingDataSource (a classe concreta que implementa a interface DataSource)
Agora esse trecho:
Connection conn = ds.getConnection();
Está recuperando uma conexão já exitente no pool (ou criando) no caso ele devolve um PoolableConnection (que implementa a interface Connection).
Agora esse trecho :
conn.close();
Está devolvendo uma conexão ao pool
Não esqueça que o Connection é uma interface, pelo pouco que estive estudando o código fonte do pool jakarta, a classe concreta utilizada no exemplo é o PoolableConnection (que é uma herança da classe DelegatingConnection que implementa a interface Connection)
Veja o que acontece quando chamamos o método close() (classe PoolableConnection)
public void close()
throws SQLException
{
try
{
_pool.returnObject(this);
}
catch(SQLException e)
{
throw e;
}
catch(RuntimeException e)
{
throw e;
}
catch(Exception e)
{
throw new SQLException(e.toString());
}
}
Sacou ??? a conexão não é fechada, ela é devolvida ao pool utilizando o método returnObject
Era essa sua dúvida ???
Só como lembrete para quem já usa o tomcat, as versões mais novas já vem com o Pool embutido
[]s, Welington B. Souza
DataSource ds =
(DataSource)ctx.lookup(
"java:comp/env/jdbc/TestDB");
essa parte não entendi muito bem…! esse objeto “ctx” é instanciado por qual classe? e essa url tem quer configurar em algum lugar???
valeu pela resposta…
P.S.: Esse Pool que vem no tomcat é o DHCP??? quer dizer que não precisa baixar o DHCP separado???
desculpe é DBCP.
InitialContext initCtx = new InitialContext();
DataSource ds = (DataSource) initCtx.lookup("java:comp/env/my-datasource");
ou seja, quando inicializo o codigo acima só preciso chamar
Connection conn = ds.getConnection();
quantas vezes for preciso, não é?? ou preciso toda vez inicializar o “DataSource”??? o “java:comp/env” é default ???
[quote=“André JVM”]
DataSource ds =
(DataSource)ctx.lookup(
"java:comp/env/jdbc/TestDB");
essa parte não entendi muito bem…! esse objeto “ctx” é instanciado por qual classe? e essa url tem quer configurar em algum lugar???
valeu pela resposta…
P.S.: Esse Pool que vem no tomcat é o DHCP??? quer dizer que não precisa baixar o DHCP separado???[/quote]
O ctx é o Context ( Context ctx = new InitialContext() ), que é utilizado para executar as operações de naming
A URL é configurada no web.xml dentro do seu webapp, repare no exemplo dado em : http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jndi-datasource-examples-howto.html
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<description>MySQL Test App</description>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
O resource-ref é uma referência para um recurso, o código abaixo configurado dentro do server.xml (dentro da pasta conf)
<Resource name="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/TestDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
...
...
...
Sim esse pool que vem no Tomcat é o DBCP (utilizado no Struts 1.1), nesse caso você não precisa baixa-lo
[quote=“André JVM”][code]
InitialContext initCtx = new InitialContext();
DataSource ds = (DataSource) initCtx.lookup(“java:comp/env/my-datasource”);
[/code]
ou seja, quando inicializo o codigo acima só preciso chamar
Connection conn = ds.getConnection();
quantas vezes for preciso, não é?? ou preciso toda vez inicializar o “DataSource”??? o “java:comp/env” é default ???[/quote]
Bem, primeiro você deve obter um DataSource para pegar um Connection, para evitar toda hora de fazer um lookup, eu criei um cachezinho (utilizei um HashMap) para armazenar o DataSource na primeira vez que ele for chamado, na segunda vez que eu precisar de um DataSource eu recupero um já existente no HashMap, evitando lookups desnecessários.
Sim o “java:comp/env” é default
Caro Douglas,
fico muito agradecido pelas explicações…, essa tarde mudei toda minha
aplicação para usar o Pool do Jakarta graças a sua explicação.
muito grato,
valeu…