| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2004 09:57:56
|
rbarioni
GUJ Master
![[Avatar]](/images/avatar/c8ad096d3f3b756be66f6.gif)
Membro desde: 02/09/2002 10:49:11
Mensagens: 1317
Localização: Campinas
Offline
|
Fala galera...
alguem ae teria um exemplinho simples de como usar o DBCP da jakarta??
dei uma olhada nos exemplos lah do site dele, mas tem uns 3 exemplos lah e nao sei qual deles o melhor/ideal p/ usar...
valew
|
"Ozzy Osbourne pode ter inventado o heavy-metal, mas com certeza, Metallica o aprimorou." |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2004 10:10:00
|
maresp
Virtual Machine Man
![[Avatar]](/images/avatar/c89e78d64107fd0f1188b.jpg)
Membro desde: 28/05/2003 16:27:10
Mensagens: 553
Localização: Indaiatuba/SP
Offline
|
Vc tá utilizando jdbc puro?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2004 10:15:01
|
rbarioni
GUJ Master
![[Avatar]](/images/avatar/c8ad096d3f3b756be66f6.gif)
Membro desde: 02/09/2002 10:49:11
Mensagens: 1317
Localização: Campinas
Offline
|
eh...apenas JDBC p/ conectar no banco...
|
"Ozzy Osbourne pode ter inventado o heavy-metal, mas com certeza, Metallica o aprimorou." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2004 10:22:22
|
Régis Steigleder
JavaBaby
Membro desde: 19/03/2003 15:29:38
Mensagens: 99
Localização: Porto Alegre - RS
Offline
|
Este aqui eu peguei lá mesmo.
Inclua isto no web.xml
isto no context.xml
agora no server.xml, colocando a url correta e aclasse correta do drive.
Esta parte do server.xml o proprio tomcat pode fazer pra você. Entre no admin do tomcat e crie um data source lá passando a url e o drive. Usei a versão 5.028.
cria uma classe para criar as conexões.
e usa ela assim:
Antes que você pense que há muito código, isto é o mínimo que precisa.
Espero ter ajudado, abraço.
|
Régis Steigleder |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2004 10:22:49
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Uma dica: para entender o DBCP é preciso entender também do jakarta-commons-pool. Baixe este cara e veja a API. Depois veja como configurar um DataSource com JNDI no tomcat. Os ResourceParams do server.xml são aqueles que fazem sentido com seu pool (no caso, dbcp e pool).
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2004 10:25:31
|
maresp
Virtual Machine Man
![[Avatar]](/images/avatar/c89e78d64107fd0f1188b.jpg)
Membro desde: 28/05/2003 16:27:10
Mensagens: 553
Localização: Indaiatuba/SP
Offline
|
Bem, todo mundo já respondeu... mas vale a pena dar uma olhadinha aqui se tiver dúvidas.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2004 10:42:59
|
rbarioni
GUJ Master
![[Avatar]](/images/avatar/c8ad096d3f3b756be66f6.gif)
Membro desde: 02/09/2002 10:49:11
Mensagens: 1317
Localização: Campinas
Offline
|
valew pelas dicas, turma...
mas to usando o WAS como AppServer, nao tomcat...
mas valew..
|
"Ozzy Osbourne pode ter inventado o heavy-metal, mas com certeza, Metallica o aprimorou." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2004 11:04:55
|
wendell almeida silva
Debugger
Membro desde: 20/01/2004 11:47:57
Mensagens: 52
Localização: SP
Offline
|
Estou usando o exemplo mais simples que peguei no próprio site do projeto.
Não usei nenhuma configuração xml. Está funcionando bem.
import javax.sql.DataSource;
import java.sql.*;
import org.apache.commons.dbcp.BasicDataSource;
import java.util.Properties;
import java.io.*;
import javax.servlet.ServletContext;
public class Dbpc {
private static Dbpc instance = null;
private DataSource ds;
private Connection con;
private String driver;
private String url;
private String login;
private String password;
private int maxConnections;
private long maxWait;
/** Creates a new instance of Dbpc */
public Dbpc() {
Properties props = new Properties();
try {
InputStream fis = this.getClass().getClassLoader().getResourceAsStream("db.properties");
props.load(fis);
fis.close();
}
catch(FileNotFoundException f) {
System.out.println("File not found in Dbcp --> constructor. " + f.getMessage());
f.printStackTrace();
}
catch(IOException ioex){
System.out.println("Error I/O in Dbpc --> constructor. " + ioex.getMessage());
ioex.printStackTrace();
}
catch(Exception e) {
System.out.println("Error in Dbpc --> constructor. " + e.getMessage());
e.printStackTrace();
}
//recuperando configuracoes de acesso ao db
driver = props.getProperty("driver");
url = props.getProperty("url");
login = props.getProperty("login");
password = props.getProperty("password");
maxConnections = (new Integer(props.getProperty("maxConnections"))).intValue();
maxWait = (new Long(props.getProperty("maxWait"))).longValue();
ds = setupDataSource();
}
public static Dbpc getInstance() {
if(instance == null) {
instance = new Dbpc();
}
return instance;
}
public Connection getConn() throws SQLException {
return ds.getConnection();
}
private DataSource setupDataSource() {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(driver);
ds.setUsername(login);
ds.setPassword(password);
ds.setUrl(url);
ds.setMaxActive(maxConnections);
ds.setMaxWait(maxWait);
ds.setDefaultAutoCommit(true);
return ds;
}
public void printDataSourceStats() throws SQLException {
BasicDataSource bds = (BasicDataSource) ds;
System.out.println("NumActive: " + bds.getNumActive());
System.out.println("NumIdle: " + bds.getNumIdle());
}
/*shutdown DataSource*/
public void shutdown() throws SQLException {
BasicDataSource bds = (BasicDataSource) ds;
bds.close();
}
}
|
[]'s
Wendell |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2004 11:09:27
|
Luca
Moderador
![[Avatar]](/images/avatar/17e62166fc8586dfa4d1bc0e1742c08b.jpg)
Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline
|
Olá
Wendel, ótimo exemplo. Mas ficaria mais legal com identação entre Code e /Code. Veja dicas em: http://www.guj.com.br/forum/viewtopic.php?t=16594
[]s
Luca
|
Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."
CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2004 14:24:15
|
rbarioni
GUJ Master
![[Avatar]](/images/avatar/c8ad096d3f3b756be66f6.gif)
Membro desde: 02/09/2002 10:49:11
Mensagens: 1317
Localização: Campinas
Offline
|
valew pelas dicas pessoal...
mas eh o seguinte...o proprio WAS jah tem como implementar o Pool no servidor...
como banco, vou usar o DB2 e no pacote JDBC dele vi umas classes tb p/ fazer Pool...
ai fica a duvida...fazer ou nao no codigo o Pooling?? sera melhor deixar o servidor tratar disso??
|
"Ozzy Osbourne pode ter inventado o heavy-metal, mas com certeza, Metallica o aprimorou." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/11/2004 14:37:59
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Em servidores de aplicações (como o WAS, o Sun Java System, o JBoss etc.) normalmente a gente só obtém uma conexão a partir de um java.sql.DataSource, e a implementação de DataSource é que faz o connection pooling. Para devolver a conexão ao pool de conexões, basta fechá-la corretamente.
A única coisa chata é que a Connection que o DataSource retorna é aquela Connection bastante genérica; se você precisa usar algum recurso do banco de dados que não está exposto via JDBC puro, você precisa fazer umas mágicas.
Por exemplo, teve uma vez que tive de passar BLOBs como parâmetros para stored procedures no Oracle e também ARRAYs e objetos Oracle, e isso só consegui fazer direitinho (incluindo o problema da limitação de tamanho de BLOBs...) usando oracle.jdbc.internal.OracleConnection e outras rotinas no pacote oracle.jdbc; então tive que fazer uma pequena mágica - normalmente o objeto Connection retornado pelo DataSource é um wrapping da conexão "nativa" para o banco. Então tive de checar se o objeto Connection retornado pelo DataSource era um org.jboss.resource.adapter.jdbc.WrappedConnection (no caso do JBoss), e se fosse, ele tem um método getUnderlyingConnection, que retorna a conexão como um objeto oracle.jdbc.internal.OracleConnection.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2005 13:45:58
|
Rubem Azenha
GUJ Master
![[Avatar]](/images/avatar/cb953f6ca5923f7517125db46ed1293d.jpg)
Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline
|
só de usar Singleton com DAO ja não cria um pool por assim dizer?
|
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2005 17:43:57
|
Lucas Teixeira
Java Ninja
![[Avatar]](/images/avatar/758a06618c69880a6cee5314ee42d52f.png)
Membro desde: 11/12/2003 10:47:22
Mensagens: 269
Localização: São Paulo - SP
Offline
|
microfilo wrote:só de usar Singleton com DAO ja não cria um pool por assim dizer?
Hum... eu acho que o conceito de um pool de conexões vai muito além de um "acessa-o-banco-e-manda-pra-ca". Um pool vai estar gerenciando não só o request de conexões, mas também a quantidade de conexões ativas, a configuração do DataSource, e dentro de cada uma destas, muitas outras configurações.
Em nosso projeto, estamos usando o c3p0 que está dando conta do recado muito bem. Sua configuração é trivial e ele faz tudo de maneira muito transparente. Acho que é uma boa saida.
Rubens Microfilo, o conceito de Singleton não está descartado, afinal o pool deve ser único
(:
|
Lucas F. A. Teixeira .·.
lucastex no gmail com
lucastex.com/twitter |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2005 22:52:58
|
Rubem Azenha
GUJ Master
![[Avatar]](/images/avatar/cb953f6ca5923f7517125db46ed1293d.jpg)
Membro desde: 28/06/2004 00:10:43
Mensagens: 1933
Localização: São Paulo, SP
Offline
|
hum
legal
digamos que eu esteje usando DAO e singleton
digamos que eu queira limitar o numero de conexão ha 17 conexões simultaneas
o que vcs acham dessa solução
seria uma coisa assim?
PS: Meu nome é RubeM (primogênito de Jacó), não RubeNS(piloto de F1)
|
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/01/2005 01:04:20
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Singleton = ruim. Use um pool de verdade.
|
|
|
 |
|
|