 |
AppletTalk.com Java discussions newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
_merlinO_ Guest
|
Posted: Wed Nov 24, 2004 2:48 pm Post subject: [Lungo] Tomcat + sqlserver: incubi e storie dell'orrore |
|
|
Aiutatemi prima che finisca al manicomio...
Sto cercando di connetermi a un db sqlserver attraverso il connection
pooling di tomcat e jndi. Ho gia' speso moltissime ore a leggermi documenti,
messaggi e articoli a riguardo e messaggi che non hanno risolto il mio
problema. Quando tento di recuperare la connessione dal codice del mio
servlet viene lanciata questa eccezione:
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of
class '' for connect URL 'null'
<...snip...>
Caused by: java.sql.SQLException: No suitable driver
<...snip...>
Sembra essere un problema molto diffuso perche' ci sono centinaia di
richieste in merito, ma sembra che non ci sia una soluzione!
Nel server.xml di Tomcat (5.0.27 ed ho provato anche versioni 4) ho
inserito questo:
<Context path="/HelloWebModule"
docBase="HelloWebModule"
debug="1"
reloadable="true" >
<Resource name="jdbc/sqlserver" auth="Container"
type="javax.sql.DataSource" />
<ResourceParams name="jdbc/sqlserver">
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:jtds:sqlserver://localhost:1433;DatabaseName=TestJDBC;SelectMethod=cursor</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>net.sourceforge.jtds.jdbc.Driver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>username</name>
<value>dbuser</value>
</parameter>
<parameter>
<name>pwd</name>
<value></value>
</parameter>
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
</ResourceParams>
</Context>
nel web.xml dell'applicazione ho messo questo:
<resource-ref>
<res-ref-name>jdbc/sqlserver</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
e il codice con cui cerco di ottenere la connessione e' questo:
InitialContext jndiCntx = null;
Context ctx = null;
if (dataSource == null) {
jndiCntx = new InitialContext();
ctx = (Context) jndiCntx.lookup("java:comp/env");
dataSource = (javax.sql.DataSource)
ctx.lookup(jdbc/sqlserver);
}
dbConnection = dataSource.getConnection();
Ho provato a usare il driver Microsoft mettendo i rispettivi file .jar nella
commonlib di tomcat e nel classpath dell'applicazione. Non essendoci
riuscito ho anche provato con jtds ma non e' cambiato nulla...
Dove sbaglio? possibile che sia cosi' difficile??
merlinO
|
|
| Back to top |
|
 |
Enzo Guest
|
Posted: Wed Nov 24, 2004 3:39 pm Post subject: Re: [Lungo] Tomcat + sqlserver: incubi e storie dell'orrore |
|
|
| Quote: | Aiutatemi prima che finisca al manicomio...
Sto cercando di connetermi a un db sqlserver attraverso il connection
pooling di tomcat e jndi. Ho gia' speso moltissime ore a leggermi
documenti,
messaggi e articoli a riguardo e messaggi che non hanno risolto il mio
problema. Quando tento di recuperare la connessione dal codice del mio
servlet viene lanciata questa eccezione:
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of
class '' for connect URL 'null'
...snip...
Caused by: java.sql.SQLException: No suitable driver
...snip...
|
Che dire? Dovrebbe essere tutto in ordine.
L'unico dubbio che avrei è sul numero di jar che fanno parte del driver
jdbc.
Nella mia applicazione tali jar sono:
msbase.jar, mssqlserver.jar ed msutil.jar.
Io li ho messi nella cartella common lib di Tomcat.
Inoltre la definizione del mio contesto è la seguente:
<Context className="org.apache.catalina.core.StandardContext"
cachingAllowed="true"
charsetMapperClass="org.apache.catalina.util.CharsetMapper"
cookies="true"
crossContext="true" debug="0" docBase="D:test"
mapperClass="org.apache.catalina.core.StandardContextMapper"
path="/testmssql"
privileged="false" reloadable="true" swallowOutput="false"
useNaming="true"
wrapperClass="org.apache.catalina.core.StandardWrapper"
workDir="D:testwork">
<Resource name="jdbc/dsnmssql" scope="Shareable"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/dsnmssql">
<parameter>
<name>validationQuery</name>
<value>SELECT getdate()</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>10</value>
</parameter>
<parameter>
<name>password</name>
<value>test</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=TEST</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>username</name>
<value>test</value>
</parameter>
</ResourceParams>
</Context>
Nel file web.xml non c'è nessun riferimento alla risorsa definita nel
contesto. Per cui proverei a commentare quelle righe.
La connessione viene acquisita in questo modo:
......
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
ds = (DataSource)envContext.lookup("jdbc/dsnmssql");
Connection c = ds.getConnection();
......
Ultima nota di "colore". Noi stiamo passando ad Oracle 10G; superato questo
problema
probabilmente ne avrai degli altri come il tristemente famoso (Connection
reset by peer ).
Buona fortuna.
|
|
| Back to top |
|
 |
_merlinO_ Guest
|
Posted: Wed Nov 24, 2004 3:44 pm Post subject: Re: [Lungo] Tomcat + sqlserver: incubi e storie dell'orrore |
|
|
"Enzo" <v.stefa (AT) libero (DOT) it> wrote
[...]
| Quote: | Nella mia applicazione tali jar sono:
msbase.jar, mssqlserver.jar ed msutil.jar.
Io li ho messi nella cartella common lib di Tomcat.
|
cosi' ho fatto anch'io... poi ho letto di qualcuno che diceva che i driver
microzozz fanno schifo e di usare jdts ma non e' cambiato niente...
| Quote: | Inoltre la definizione del mio contesto è la seguente:
Context className="org.apache.catalina.core.StandardContext"
cachingAllowed="true"
charsetMapperClass="org.apache.catalina.util.CharsetMapper"
cookies="true"
crossContext="true" debug="0" docBase="D:test"
mapperClass="org.apache.catalina.core.StandardContextMapper"
path="/testmssql"
privileged="false" reloadable="true" swallowOutput="false"
useNaming="true"
wrapperClass="org.apache.catalina.core.StandardWrapper"
workDir="D:testwork"
|
E' la prima volta che lo vedo dichiarato cosi', faccio qualche prova...
incrociando le dita ;-)
| Quote: | Ultima nota di "colore". Noi stiamo passando ad Oracle 10G; superato
questo
problema
probabilmente ne avrai degli altri come il tristemente famoso (Connection
reset by peer ).
|
miiiii! e' ingestibile questa cosa... :-/
merlinO
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|