Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    95

    [JAVA] problemi datasource con tomcat

    Ciao. qualcuno ha qualche esempio di come si usano i Datasource con Tomcat, come lo si imposta per creare un pool di conessioni ad un database microsoft access o sqlserver che fanno uso di jdbc/odbc o comunque anche se non fanno uso basta che funzioni??ho visto che il pool jndi si imposta nell'admin di tomcat ma poi devo configuare acneh server.xml e web.xml? un esempio? grazie.

    Io ho costruito ad esempio questa servlet ma non mi prende il jndi:

    //Process the HTTP Get request
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    try{
    response.setContentType(CONTENT_TYPE);
    out = response.getWriter();
    out.println("eseguo il context\n");
    Context ctx = new InitialContext();
    out.println("context eseguito\n");
    javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("pooldbprova");
    out.println("aperto il datasource: " + ds.toString());
    Connection con = ds.getConnection();
    out.println("conessione ottenuta\n");
    Statement st = con.createStatement();
    ResultSet rs = st.executeQuery("select * from matricole");
    out.println("query eseguita\n");
    while (rs.next()){
    out.println(rs.getString("nome"));
    out.println(rs.getString("cognome"));
    out.println(rs.getInt("matricola"));
    }
    con.close();
    }catch(Exception e){out.println(e.getStackTrace() + " " + e.getMessage().toString());}


    Eccoin admin:

    JNDI Name: pooldbprova
    Data Source URL: jdbcdbc:dbprova
    JDBC Driver Class: sun.jdbc.odbc.JdbcOdbcDriver

    il resto non l'ho modificato..
    ed ho aggiunto nell'odbc sotto panello di controllo l'odbc per il mio database chiamandolo dbprova.

    Qualcuno sa dirmi come farlo andare?

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    95

    AIUTOOOOOOOO!

    AIUTOOOOO!

  3. #3
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Anche a me interesserebbe capire esattamente come occorre configurare tomcat affinche' si possa far uso dei connection pool all'interno dei servlet.

    Dopo aver configurato opportunamente il file server.xml per rendere disponibile la "risorsa" per lo specifico database (postgres nel mio caso) e dopo avere incluso i .jar opportuni nel classpath cosa occorre fare per creare ed utilizzare dei connection pool nelle classi servlet ?!?

    thks

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    questo va nel server.xml
    codice:
            <Context debug="0" docBase="percorso" path="/contesto" reloadable="true" workDir="directory work">
    
              <Resource name="jdbc/nomeDataSource" auth="Container" type="javax.sql.DataSource"/>
              <ResourceParams name="jdbc/nomeDataSource">
                <parameter>
                  <name>factory</name>
                  <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
                </parameter>
                <parameter>
                  <name>driverClassName</name>
                  <value>oracle.jdbc.driver.OracleDriver</value>
                </parameter>
                <parameter>
                  <name>url</name>
                  <value>jdbc:oracle:thin:@server:1521:database</value>
                </parameter>
                <parameter>
                  <name>username</name>
                  <value>nome utente</value>
                </parameter>
                <parameter>
                  <name>password</name>
                  <value>passw database</value>
                </parameter>
                <parameter>
                  <name>maxActive</name>
                  <value>20</value>
                </parameter>
                <parameter>
                  <name>maxIdle</name>
                  <value>10</value>
                </parameter>
                <parameter>
                  <name>maxWait</name>
                  <value>-1</value>
                </parameter>
              </ResourceParams>
    questo va nel web.xml della webapp
    codice:
      <resource-ref>
        <description>descrizione</description>
        <res-ref-name>jdbc/nomeDataSource</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Unshareable</res-sharing-scope>
      </resource-ref>
    e si usa cosė
    codice:
    Context envCtx = new InitialContext();
    DataSource ds = (DataSource)envCtx.lookup("jdbc/nomeDataSource");
    Connection conn = ds.getConnection();

  5. #5
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Ho proprio configurato in questo modo sia il file server.xml (All'interno della directory conf) che il file web.xml (Nella directory WEB-INF dell'applicazione).
    Cio' che no va e' che quando faccio la lookup mi ritorna null.

    Dipende dal nome sbagliato della risorsa cercata, da errori nell'impostazione dei parametri o da cos'altro ?

    Inoltre: nel caso in cui io non voglia inserire esplicitamente la password all'interno del file server.xml posso comunque impostarla da codice "manipolando" il DataSource ottenuto ?

    thks

  6. #6
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    se il lookup ritorna null la risorsa non č stata trovata, dunque potrebbe essere il nome jndi
    puoi usare questo metodo http://java.sun.com/j2se/1.5.0/docs/...a.lang.String)

  7. #7
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Originariamente inviato da floyd
    se il lookup ritorna null la risorsa non č stata trovata, dunque potrebbe essere il nome jndi
    puoi usare questo metodo http://java.sun.com/j2se/1.5.0/docs/...a.lang.String)
    ok

    Utilizzando il metodo getConnection(username, password), quindi, posso evitare di mettere i parametri
    codice:
    <parameter>
    <name>username</name>
    <value>nome utente</value>
    </parameter>
    <parameter>
    <name>password</name>
    <value>passw database</value>
    </parameter>
    nel file server.xml ?

  8. #8
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    io metto sempre tutto nel server.xml perchč preferisco evitare di mettere user e pwd nel codice, comunque nel caso direi che non servirebbero pių nei parametri

  9. #9
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Azz... continuo ad avere problemi...

    Quando vado a fare il getConnection mi da un NullPointerException perche' l'oggetto DataSource e' null.

    Io ho nominato il DataSource, sia nel server.xml che nel web.xml, jdbc/postgres come indicato sulla documentazione di tomcat.
    E da codice faccio la lookup in questo modo:
    codice:
    Context inCon = new InitialContext();
    DataSource dS = (DataSource) inCon.lookup("jdbc/postgres");
    /*...E successivamente...*/
    Connection con = dS.getConnection("username", "password");
    /*...*/
    I .jar commons-pool, commons-dbcp e commons-collections devono essere posizionati in qualche altra cartella oltre che in common/lib ?

  10. #10
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Mentre adesso mi restituisce correttamente il data source il problema c'e' quando chiamo il getConnection().
    Ottengo, infatti, una connessione null.

    Causa ?

    Lo username e la password (Stringa vuota) sono inseriti correttamente eppure...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.