Newsgroup: it.comp.java
Titolo: Connection Pool

Salve sono abbastanza inesperto nella programmazione in Java, sto
realizzando una applicazione Web in Jsp.
Ora mi è stato richiesto di utulizzare una Connection pool invece di creare
nuove connessioni al database in ogni pagina.
Siccome non ho la più pallida idea di come funzioni qualcuno sarebbe cosi
gentile da darmi indicazioni su come usarla?
E' una classe? Come vengono chiamati i suoi metodi dai template?
Grazie mille a chi avrà voglia di darmi una mano :)
-- 
=============== Totò alias J_Zanetti ================
                          Tessera #9 "Nel segno di Cruz"
  Tessera #0 #7 "ANDY SCHIET ZE ALLEMAAL" (fondatore)
============== toto...@SPAMtin.it ===============

 Grazie mille a chi avrà voglia di darmi una mano :)
Spero di essere stato di aiuto ci vediamo su ISCI.
Forza il Capitano (stiamo già diventando OT).
G.M.


http://csvtosql.sourceforge.net/

dimenticavo
http://proxool.sourceforge.net/


 Forza il Capitano (stiamo già diventando OT).
Sempre! :)


 
http://proxool.sourceforge.net/
 Grazie! Lo proverň
-- 
=============== Totň alias J_Zanetti ================


mi hanno chiesto come si usa rispondo qui.
//all'avvio dell'applicazione
//si carica il driver
Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
//si configura
org.logicalcobwebs.proxool.configuration.JAXPConfigurator.configure("/pool.xml", false);
//quando si ha bisogno
//si richiede la connessione normalmente
DriverManager.getConnection("proxool.mypool");
e questo è il file /pool.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<something-else-entirely>
  <proxool>
    <alias>efupool</alias>
    <driver-url>jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:NOMEISTANZA</driver-url>
    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    <driver-properties>
      <property name="user" value="myuser"/>
      <property name="password" value="mypass"/>
    </driver-properties>
    <house-keeping-sleep-time>30</house-keeping-sleep-time>
    <house-keeping-test-sql>select * from dual</house-keeping-test-sql>
    <maximum-connection-count>100</maximum-connection-count>
    <maximum-new-connections>10</maximum-new-connections>
    <minimum-connection-count>5</minimum-connection-count>
    <!-- TIMEOUT MANAGAMENT -->
    <maximum-active-time>100000</maximum-active-time>
    <maximum-connection-lifetime>18000000</maximum-connection-lifetime>
    <statistics>10s,15m</statistics>
</proxool>
</something-else-entirely>
semplicissimo e poco invasivo (1 riga di codice in più)


scusate sostituite 
     <alias>efupool</alias>
con
     <alias>mypool</alias>


semplicissimo e poco invasivo (1 riga di codice in più)
Scusa la mia ignoranza in materia, ho ancora 2 dubbi:
Il file xml dove va inserito?
Per "installarlo" è sufficiente inserire il jar nel classpath?
Grazie ancora per la tua disponibilità!


 indolore, ho modificato 1 o 2 righe di codice, trovi tutti i tutorial sul
sito.
 Perchè dalla seconda esecuzione in poi mi da questi errori?
Alla prima si collega e tutto ok? E' per il parsing XML? O non riesce a
creare altri processi di connessione?
javax.servlet.ServletException: Parsing failed.
 at
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImp
l.java:471)
 at org.apache.jsp.login$jsp._jspService(login$jsp.java:157)
org.logicalcobwebs.proxool.ProxoolException: Parsing failed.
 at
org.logicalcobwebs.proxool.configuration.JAXPConfigurator.configure(JAXPConf
igurator.java:91)
 at
org.logicalcobwebs.proxool.configuration.JAXPConfigurator.configure(JAXPConf
igurator.java:56)
Caused by: org.logicalcobwebs.proxool.ProxoolException: Attempt to register
duplicate pool called 'mypool'
 at
org.logicalcobwebs.proxool.configuration.XMLConfigurator.endElement(XMLConfi
gurator.java:198)
Caused by:
org.logicalcobwebs.proxool.ProxoolException: Attempt to register duplicate
pool called 'mypool'


 Per "installarlo" è sufficiente inserire il jar nel classpath?
l'ho scritto.
..PConfigurator.configure("/pool.xml", fal..
dove vuoi, io lo messo sulla root.
si si il jar nel classpath :)


perchè registri due volte il connection pool
le prime due righe le devi eseguire solo una volta.


 le prime due righe le devi eseguire solo una volta.
mmm...io ho una pagina di login in jsp, come faccio a far eseguire quelle
righe solo una volta?
questa avvertenza è normale invece quando lo lancio?
AVVERTENZA: Use of proxool.maximum-new-connections is deprecated. Use more
descriptive proxool.simultaneous-build-throttle instead.


 
eh questa sarà deprecata, guarda la documentazione.


 nel web.xml
Grazie mille, sei davvero un grande!
Ho fatto la servlet, ma non riesco a caricarla all'avvio :(
Ho messo le tue righe nel XML sostituendo miopackage ma non parte..... non
so dove sbattere la testa


 
ovviamente hai scritto anche questo
  <servlet-mapping>
    <servlet-name>InitDB</servlet-name>
    <url-pattern>/servlet/InitDB</url-pattern>
  </servlet-mapping>


   </servlet-mapping>
 Si scritto perň niente.
Come faccio  ad assicurarmi che questo sia il percorso giusto della servlet?
(Sto facendo tutto con jbuilder)
  <url-pattern>/servlet/InitDB</url-pattern>
=============== Totň alias J_Zanetti ================


 servlet? (Sto facendo tutto con jbuilder)
evita jbuilder. jbuilder č il male
e non ti insegna sicuramente come fare una servlet.
:)


 ovviamente hai scritto anche questo
Questa č la mia init, quando lancio non mi da nemmeno il messaggio "Entro
nella Servlet"
  public void init() {
    System.out.print("Entro nella Servlet");
    try {
      Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
    }
    catch (ClassNotFoundException ex) {
    }
    try {
      org.logicalcobwebs.proxool.configuration.JAXPConfigurator.configure(
          "/pool.xml", false);
    }
    catch (ProxoolException ex1) {
    }
  }
=============== Totň alias J_Zanetti ================


 :)
 eheh lo so, hai ragione.
però devo consegnare questo progetto e Jbuilder mi aiuta visto che ho i
tempi ridotti.
Devo solo utilizzare questo connection pool e riuscire a capire come
invalidare la sessione nella pagina di login :)
-- 
=============== Totò alias J_Zanetti ================


 invalidare la sessione nella pagina di login :)
su jbuilder non ti so aiutare perchè ho sempre cercato di evitare di usarlo :)
appena puoi passa a netbeans.


 appena puoi passa a netbeans.
Ok :)
Ora però sono bloccato :( non riuscendo a caricare questa servlet mi da come
errore "No suitable Driver"
In pratica non carica il driver giusto?


 
si, è perchè non carica il driver e cmq non registra neanche il connection pool.
questo va fatto a livello di applicazione e quindi c'è solo 
il modo che ti ho detto prima :(


 il modo che ti ho detto prima :(
 Ok grazie, sei stato molto gentile, davvero.
Io avevo pensato come soluzione di fare caricare il driver solo quando la
sessione è nulla o nuova (isNew() ), cioè appena si entra nel sito
ma credo sia molto sbagliata come idea:(
Boh dovrò rompermi la testa e cercare di capire come lanciare la servlet


 Boh dovrò rompermi la testa e cercare di capire come lanciare la servlet
bruttissima idea :) la sessione è a livello utente.


 bruttissima idea :) la sessione è a livello utente.
Questo è il mio web.xml, la servlet debugJsp la carica, ma non la posso
modificare io vero?
Altrimenti ci aggiungevo il driver nella sua init....
sto brancolando nel buio :)
<?xml version="1.0" encoding="UTF-8"?>
<!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>
  <display-name>WebModule1</display-name>
  <servlet>
    <servlet-name>InitDB</servlet-name>
    <servlet-class>webfantacalcio.InitDB</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>debugjsp</servlet-name>
    <description>Added to compile JSPs with debug info</description>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
      <param-name>classdebuginfo</param-name>
      <param-value>true</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>InitDB</servlet-name>
    <url-pattern>/servlet/InitDB</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>debugjsp</servlet-name>
    <url-pattern>*.jsp</url-pattern>
  </servlet-mapping>
</web-app>
=============== Totò alias J_Zanetti ================
                          Tessera #9 "Nel segno di Cruz"
  Tessera #0 #7 "ANDY SCHIET ZE ALLEMAAL" (fondatore)
============== toto...@SPAMtin.it ===============

 modificare io vero?
 NON CI CREDO!!!!
Dimenticavo di mettere il tag load on startup!!!!!
Sono un fallito!!!!
Oh quando passi da Como hai una birra offerta ;)
