Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Servlet e DB MySQL - Connection POOL

    Ciao,

    vorrei leggere delle informazioni da una tabella all'interno di un DB MySQL.
    Applicazione WEB, su Servlet.

    Mi si dice di costruire una Connection Pool, quindi un file "Classe Java" o una Servlet ad hoc, sulla quale scrivere questa Connection Pool....

    Il fatto è che non so proprio da dove iniziare.

    Il mio approccio era "brutale" ... creare la connessione.. usarla.. etc.. direttamente quando serviva.. ovviamente non è un modo di fare serio, tantomeno quando si tratta di applicazioni web.

    Qualche indicazione?

    Grazie.


    PS: sto scorrendo questo link.. http://www.chicercatrova2000.it/java/java_pool.asp
    pare interessante, ma non ci capisco molto, più che altro come utilizzare quel codice all'interno di altre Servlet.

  2. #2
    ecco qua.. probabilmente questo come base di partenza può essere significativo

    http://www.kgo.de/Pool.html

  3. #3
    niente da fare.. non so da che parte prendere questo discorso..


    non considerato quello che ho scritto sopra...
    sto riprendendo questo esempio
    http://wiki.metawerx.net/wiki/JNDIDB...pleForMySQL5.x


    il fatto è che il file context.xml l'ho fatto.. ma il resto? che cosa devo fare??

  4. #4
    codice:
    DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mydatabase");
    ... java:comp/env/jdbc/mydatabase ??

    chi è questo?

  5. #5
    ok, è il nome del database che ho mappato sulla context.xml

    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <Context>
        <Resource name="jdbc/mydatabase"
                  auth="Container"
                  type="javax.sql.DataSource"
                  username="root"
                  password=""
                  driverClassName="com.mysql.jdbc.Driver"
                  url="jdbc:mysql://localhost:3306/progetto"
                  validationQuery="select 1"
                  removeAbandoned="true"
                  removeAbandonedTimeout="120"
                  logAbandoned="true"
                  maxWait="60"
                  maxActive="10"
                  maxIdle="4"/>
    </Context>

    boh.. mi solleva delle exception...

  6. #6
    ho aggiunto sulla web.xml anche questo

    codice:
        <resource-ref>
            <description>DB Connection</description>
            <res-ref-name>jdbc/mydatabase</res-ref-name>
            <res-type>javax.sql.DataSource</res-type>
            <res-auth>Container</res-auth>
        </resource-ref>

  7. #7
    il risultato è...

    codice:
    javax.naming.NameNotFoundException: mydatabase not found

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    309
    ciao
    io l'ho visto fare in modo diverso. mysql è la versione 5 ma tomcat un pò anziano la versione 1.5.
    intanto verifica anche la libreria di mysql.
    nel server.xml:
    codice:
    <Resource type="javax.sql.DataSource" name="nomeResorce"/>
    
    <ResourceParams name="nomeResorce">
          <parameter>
            <name>maxWait</name>
            <value>5000</value>
          </parameter>
          <parameter>
            <name>maxActive</name>
            <value>4</value>
          </parameter>
          <parameter>
            <name>password</name>
            <value>mypassword</value>
          </parameter>
          <parameter>
            <name>url</name>
            <value>jdbc:mysql://localhost:3306/nomeDB</value>
          </parameter>
          <parameter>
            <name>driverClassName</name>
            <value>org.gjt.mm.mysql.Driver</value>
          </parameter>
          <parameter>
            <name>maxIdle</name>
            <value>2</value>
          </parameter>
          <parameter>
            <name>username</name>
            <value>root</value>
          </parameter>
        </ResourceParams>
    in context.xml:
    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <Context path="/sirac">
        <ResourceLink name="nomeRisorsa" global="nome_inserito in server.xml"       type="javax.sql.DataSource" />
    </Context>
    per richiamarlo devi fare riferimento al nome indicato in context.xml

    come vedi driver class name è diverso

    spero ti torni utile
    ciao
    tomcat 6.016
    netbeans 6.1

  9. #9
    purtroppo.. io sono su netbeans 6.8 e non ci gira tomcat di default, bensì glassfish v2.


    forse è anche questo un problema..



    PS: ieri sera ho seguito la procedura automatizzata su netbeans per la creazione di una connectionPool standard.
    La procedura ha creato un file [Server Resources]\sun-resources.xml
    contenente la configurazione:

    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE resources PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Resource Definitions //EN" "http://www.sun.com/software/appserver/dtds/sun-resources_1_3.dtd">
    <resources>
      <jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="connectionPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.DataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
        <description>Collegamento DB progetto</description>
        <property name="URL" value="jdbc:mysql://localhost:3306/progetto"/>
        <property name="User" value="root"/>
        <property name="Password" value="()"/>
      </jdbc-connection-pool>
    </resources>


    il fatto è.. che poi non so come utilizzarla sulle mie Servlet questo xml

  10. #10
    ho seguito questa guida e qualcosa funziona:

    http://netbeans.org/kb/docs/web/mysq...html#settingUp


    però.. quando eseguo il codice SQL.. succede questo:

    codice:
    PWC1635: Illegal access: this web application instance has been stopped already (the eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact)
    StandardWrapperValve[Riepilogo]: PWC1406: Servlet.service() for servlet Riepilogo threw exception
    java.lang.ThreadDeath


    il codice sulla servlet:

    codice:
            try{
                Context initContext = new InitialContext();
                Context envContext  = (Context)initContext.lookup("java:comp/env");
                DataSource ds = (DataSource)initContext.lookup("jdbc/myDatasource");
                Connection con = ds.getConnection();
                Statement stmt = con.createStatement();
                String sql = "SELECT * from prodotti";
                ResultSet rs = stmt.executeQuery(sql);
                while(rs.next()){
                    System.out.println(rs.getString(1));
                    System.out.println(rs.getString(" - "));
                    System.out.println(rs.getString(2));
                }
                rs.close();
                stmt.close();
            }catch(NamingException ex){System.err.println(ex);}catch(SQLException ex){System.err.println(ex);}

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.