AppletTalk.com Forum Index AppletTalk.com
Java discussions newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[Lungo] Tomcat + sqlserver: incubi e storie dell'orrore

 
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian)
View previous topic :: View next topic  
Author Message
_merlinO_
Guest





PostPosted: Wed Nov 24, 2004 2:48 pm    Post subject: [Lungo] Tomcat + sqlserver: incubi e storie dell'orrore Reply with quote



Aiutatemi prima che finisca al manicomio... Smile
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





PostPosted: Wed Nov 24, 2004 3:39 pm    Post subject: Re: [Lungo] Tomcat + sqlserver: incubi e storie dell'orrore Reply with quote



Quote:
Aiutatemi prima che finisca al manicomio... Smile
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





PostPosted: Wed Nov 24, 2004 3:44 pm    Post subject: Re: [Lungo] Tomcat + sqlserver: incubi e storie dell'orrore Reply with quote




"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... :-/

Quote:
Buona fortuna.

merlinO



Back to top
Display posts from previous:   
Post new topic   Reply to topic    AppletTalk.com Forum Index -> Java (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.