WebApp Java + Pool

7 views
Skip to first unread message

chopinx04

unread,
Jul 13, 2010, 6:40:14 PM7/13/10
to jug...@googlegroups.com

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Ciao a tutti,

a seguito di chiacchierata siamo arrivati alla possibilita' di usare
un pool per gestire le connessioni su db.. per cui:

@Marko: spiega! :)

pfiati,
0x412E
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEAREKAAYFAkw8604ACgkQ4bGOEGfZtvOqaQCdH+D0Tnhj6/9h9FHpV/hv/+hY
s1gAn1L9Wv/P8xzY6cuuzZQVfm2RnK+Z
=xsjj
-----END PGP SIGNATURE-----

Marco Schwarz

unread,
Jul 14, 2010, 2:11:18 AM7/14/10
to jug...@googlegroups.com
Ciao Armando,

come ti ho spiegato (voluto spiegare) ieri, e' abbastanza semplice... implementarlo, anche se ogni tanto mi incasino anche io....

1. creare nel file META-INF/context.xml' il tag <Resource>

<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource auth="Container" description="Test DB Pool"
name="jdbc/pooldb" type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver" username="postgres"
password="xxxx" url="jdbc:postgresql://localhost/test?charSet=UNICODE"
maxWait="-1" maxActive="5" maxIdle="2" removeAbandoned="true"
removeAbandonedTimeout="50" logAbandoned="true"
validationQuery="select * from dummy;" />
</Context>


2. Nella AbstractServlet (Io ne creo sempre una!) metto la function getConnection(), cosi posso sempre prendere una connessione dal pool

protected Connection getConnection() {
Connection connection = null;
try {
Context init = new InitialContext();
DataSource ds = (DataSource) init.lookup("java:comp/env/jdbc/pooldb");
connection = ds.getConnection();
} catch (NamingException e) {
getLogger().error("Can't retrieve java:comp/env/jdbc/pooldb", e);
} catch (SQLException e) {
getLogger().error("SQLException", e);
} catch (Exception e) {
getLogger().error("Exception", e);
}
return connection;
}

3. Usando JSTL posso semplicemente fare

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
<sql:query var="rs" dataSource="jdbc/pooldb">
SELECT firstname, surename FROM customer ORDER BY custId
</sql:query>

<c:forEach var="row" items="${rs.rows}">
.. iterazione
</c:forEach>


4. Link

http://www.devdaily.com/blog/post/java/how-configure-tomcat-dbcp-connection-pool-pooling-postgres

Pero' che ti aiuti... dato che non sono bravo a scrivere spiegazioni.

Saluti
Marco


MaSc

cioppino.NET
Marco Schwarz
Feldweg 5
Handy +39 3314020095
I - 39025 Plaus (BZ)
http://www.cioppino.net/
---------- Original Header -----------

From : jug...@googlegroups.com
To : jug...@googlegroups.com
Cc :
Date : Wed, 14 Jul 2010 00:40:14 +0200
Subject : [JUGTAA] WebApp Java + Pool

> --
> You received this message because you are subscribed to the Google Groups "JUG Trentino Alto Adige Suedtirol" group.
> To post to this group, send email to jug...@googlegroups.com.
> To unsubscribe from this group, send email to jugtaa+un...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/jugtaa?hl=en.
>
>

Mario Passamani

unread,
Jul 14, 2010, 3:55:50 AM7/14/10
to jug...@googlegroups.com
Ciao, come vi spiegavo (cercavo di :) ieri, ecco la mia soluzione:

http://wiki.liquidpub.org/mediawiki/index.php/Database_Guidelines#Accessing_DB_from_an_application

Tenete presente che il problema era convertire un'applicazione
appfuse-light che già usava Hibernate + JDBC, in una che usasse
Hibernate + JNDI (per cui io non ho bisogno di fare "getConnection()"
nel mio codice, ma devo configurare la DataSource per Hibernate). Ci
sono arrivato dopo innumerevoli tentativi e "googlate" :-)

Btw, nel mio caso, ho messo tutta la configurazione nel server.xml,
che è a livello di container, mentre nel Context.xml c'è solo una
reference.

2010/7/14 Marco Schwarz <marco....@cioppino.net>:

--

I watched the stars fall silent from your eyes.

Cristiano Tomasi

unread,
Jul 14, 2010, 4:00:08 AM7/14/10
to jug...@googlegroups.com
Grazie a Marco e Mario per aver postato le soluzione java pool sulla ML, non manchero' di provarle appena ho un attimo.

P.S.
Grazie anche della bella serata di ieri mi sono proprio divertito :) !!!!

Saluti
Cris.

2010/7/14 Mario Passamani <mario.p...@gmail.com>

Cristiano Tomasi

unread,
Sep 3, 2010, 3:25:37 PM9/3/10
to jug...@googlegroups.com
Ancora grazie mille per le dritte.

ho provato l'esempio riportato qui

http://www.devdaily.com/blog/post/java/how-configure-tomcat-dbcp-connection-pool-pooling-postgres

e con qualche piccola modifica, (da postgres a hdbsql) ha funzionato al primo colpo.
Adesso devo solo passare a H2 e poi "il meno e' fatto"  :D

Saluti
Cris.

2010/7/14 Cristiano Tomasi <ctom...@gmail.com>

Mirco Attocchi

unread,
Sep 4, 2010, 10:55:23 AM9/4/10
to jug...@googlegroups.com
Questa e' la configurazione che usiamo noi per Hibernate + Connection Pool.

persistence.xml:

[...]
<property name="hibernate.connection.datasource" value="java:comp/env/jdbc/atreehelpdeskdb"/>
<!-- non usiamo quindi
"hibernate.connection.url"
"hibernate.connection.driver_class"
"hibernate.connection.username"
"hibernate.connection.password"
-->
[...]

context.xml:

<Resource url="jdbc:mysql:///atreehelpdeskdb"
driverClassName="com.mysql.jdbc.Driver"
name="jdbc/atreehelpdeskdb"
type="javax.sql.DataSource"
password="atreehelpdesk"
username="atreehelpdesk"
/>

Noi facciamo così perche' In questo modo usiamo il connection pool di Tomcat anche da Hibernate/JPA e possiamo usare il pool di Connessioni anche da codice che non sfrutta Hibernate/JPA.

In realtà ho comunque letto che Hibernate avrebbe un suon Connection Pooler (C3P0) e non sarebbe necessario usare quello di Tomcat

Ciao

Mirco

2010/9/3 Cristiano Tomasi <ctom...@gmail.com>



--
Mirco Attocchi
Reply all
Reply to author
Forward
0 new messages