Issue when using tomcat JDBC Connection Pool with a shared resource

2015-02-06 Thread Jean-Louis Mateo
Hi,

I would like to use the Tomcat JDBC Connection Pool with a shared resource so 
I've read :
 http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Standalone and 
http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Resource_Links

 and tried to do the same but when I try to access to my servlet I get the 
following message:

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of 
class '' for connect URL 'null'
at 
org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
at 
org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at 
org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at testPackage.DBTest.doGet(DBTest.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:612)
at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at 
sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(JdbcOdbcDriver.java:524)
at 
sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:493)
at 
sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:307)
at java.sql.DriverManager.getDriver(DriverManager.java:262)
at 
org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)
... 25 more


Environment :
Win 7
Java - jdk 1.7.0.65
Tomcat - 7.0.57
MySQL - 5.1.18



Tomcat service properties:
-Dcatalina.home=Y:\Programs\Tomcat\Tomcat7
-Dcatalina.base=Y:\00-Prod\data\catalina
-Djava.endorsed.dirs=Y:\Programs\Tomcat\Tomcat7\endorsed
-Djava.io.tmpdir=Y:\Programs\Tomcat\Tomcat7\temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=Y:\Programs\Tomcat\Tomcat7\conf\logging.properties
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-XX:MaxPermSize=512m



CATALINA_HOME/lib contents
...
tomcat-dbcp.jar
tomcat-jdbc.jar
...



CATALINA_BASE/lib contents:
mysql-connector-java-5.1.18-bin.jar


CATALINA_BASE/conf/server.xml
...
...
  GlobalNamingResources
   ...
--
Resource  name=sharedDataSource
   global=sharedDataSource
   auth=Container
   type=javax.sql.DataSource
   
factory=org.apache.tomcat.jdbc.pool.DataSourceFactory
   
driverClassName=com.mysql.jdbc.Driver

RE: Issue when using tomcat JDBC Connection Pool with a shared resource

2015-02-06 Thread MWick


 -Original Message-
 From: Daniel Mikusa [mailto:dmik...@pivotal.io]
 Sent: Friday, February 06, 2015 8:06 AM
 To: Tomcat Users List
 Subject: Re: Issue when using tomcat JDBC Connection Pool with a shared
 resource
 
 On Fri, Feb 6, 2015 at 6:27 AM, Jean-Louis Mateo jean-
 louis.ma...@bull.net
 wrote:
 
   Hi,
 
 
 
  I would like to use the Tomcat JDBC Connection Pool with a shared
  resource so I’ve read :
 
   http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Standalone and
  http://tomcat.apache.org/tomcat-7.0-
 doc/config/context.html#Resource_L
  inks
 
 
 
  …. and tried to do the same but when I try to access to my servlet I
  get the following message:
 
 
 
  org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC
  driver of class '' for connect URL 'null'
 
 
 A couple odd things here...
 
 1.) It's trying to use DBCP, not the jdbc connection pool.
 2.) It has no url or driver set.
 
 
   at
 
 org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(Ba
  sicDataSource.java:1452)
 
  at
 
 org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicData
  Source.java:1371)
 
  at
 
 org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSou
  rce.java:1044)
 
  at testPackage.DBTest.doGet(DBTest.java:62)
 
  at
  javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
 
  at
  javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
 
  at
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appli
  cationFilterChain.java:303)
 
  at
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFi
  lterChain.java:208)
 
  at
  org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
 
  at
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appli
  cationFilterChain.java:241)
 
  at
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFi
  lterChain.java:208)
 
  at
 
 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
 a
  lve.java:220)
 
  at
 
 org.apache.catalina.core.StandardContextValve.invoke(StandardContextVa
  lve.java:122)
 
  at
  org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authenticat
  orBase.java:612)
 
  at
  org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.ja
  va:170)
 
  at
  org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.ja
  va:103)
 
  at
  org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:9
  50)
 
  at
  org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValv
  e.java:116)
 
  at
  org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java
  :421)
 
  at
  org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp1
  1Processor.java:1070)
 
  at
 
 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(A
  bstractProtocol.java:611)
 
  at
  org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint
  .java:316)
 
  at
  java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.j
  ava:1145)
 
  at
  java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.
  java:615)
 
  at
 
 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThr
  ead.java:61)
 
  at java.lang.Thread.run(Thread.java:745)
 
  Caused by: java.lang.NullPointerException
 
  at
  sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(JdbcOdbcDriver.java:524)
 
  at
  sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:493)
 
  at
  sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:307)
 
  at
  java.sql.DriverManager.getDriver(DriverManager.java:262)
 
  at
 
 org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(Ba
  sicDataSource.java:1437)
 
  ... 25 more
 
  
 
 
 
  Environment :
 
  Win 7
 
  Java - jdk 1.7.0.65
 
  Tomcat - 7.0.57
 
  MySQL - 5.1.18
 
 
 
  
 
 
 
  Tomcat service properties:
 
  -Dcatalina.home=Y:\Programs\Tomcat\Tomcat7
 
  -Dcatalina.base=Y:\00-Prod\data\catalina
 
  -Djava.endorsed.dirs=Y:\Programs\Tomcat\Tomcat7\endorsed
 
  -Djava.io.tmpdir=Y:\Programs\Tomcat\Tomcat7\temp
 
  -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
 
 
  -Djava.util.logging.config.file=Y:\Programs\Tomcat\Tomcat7\conf\loggin
  g.properties
 
  -Dcom.sun.management.jmxremote
 
  -Dcom.sun.management.jmxremote.port=8099
 
  -Dcom.sun.management.jmxremote.ssl=false

Re: Issue when using tomcat JDBC Connection Pool with a shared resource

2015-02-06 Thread Daniel Mikusa
On Fri, Feb 6, 2015 at 9:57 AM, Jean-Louis Mateo jean-louis.ma...@bull.net
wrote:

 Hi Dan,

 Thank you for having replied to this issue.
 First of all, now it works fine but I would like to answer your
 questions...

  Not sure about this global attribute.  I don't believe it's an
 attribute of the pool.  Why did you add it?
 That's what I've read here
 http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Resource_Definitions


The global attribute is on the ResourceLink tag, not the Resource tag.




  2.) It has no url or driver set.
 Thanks. The issue was here and  I should have read it more closely
 about the name property (at the same above url):
 name: The name of the resource link to be created,
 relative to the java:comp/env context.
 So...
 Before, in my context file
 ResourceLink  name=jdbc/LocalTestDB  E R R O
 R  this jndi name doesn't exist
 global=sharedDataSource
 type=javax.sql.DataSource/

 After, in my context file
 ResourceLink   name=jdbc/TestDB - That's the right
 name
 global=sharedDataSource
 type=javax.sql.DataSource/

 Now it works fine

 Note: In a way, you were right global property is no need in
 GlobalNamingResources (server.xml)
 Only global (from context.xml, ResourceLink) and name
 (from server.xml, GlobalNamingResources-Resource) are needed and have to
 match


Awesome!  Glad you caught that and were able to get it working.

Dan




  You have initialSize set to 2.  This should attempt to make connections
 when you start Tomcat.  Do you see any errors at that time?
 There were no errors. At launching time, the pool is well created
 with 2 connexions in LISTENING state (netstat -an)

  This is unrelated, but don't set path here.  The path attribute is
 ignore here.  The path is determined by the name of the xml file, which
 just happens to be test-app as well.
 OK. path is no longer set.

  Do you have anything set in conf/context.xml or in your web.xml?
 See the attached file


 Best Regards

 Jean-Louis Matéo


 -Message d'origine-
 De : Daniel Mikusa [mailto:dmik...@pivotal.io]
 Envoyé : vendredi 6 février 2015 14:06
 À : Tomcat Users List
 Objet : Re: Issue when using tomcat JDBC Connection Pool with a shared
 resource

 On Fri, Feb 6, 2015 at 6:27 AM, Jean-Louis Mateo 
 jean-louis.ma...@bull.net
 wrote:

   Hi,
 
 
 
  I would like to use the Tomcat JDBC Connection Pool with a shared
  resource so I’ve read :
 
   http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Standalone and
  http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Resource_L
  inks
 
 
 
  …. and tried to do the same but when I try to access to my servlet I
  get the following message:
 
 
 
  org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC
  driver of class '' for connect URL 'null'
 

 A couple odd things here...

 1.) It's trying to use DBCP, not the jdbc connection pool.
 2.) It has no url or driver set.


   at
  org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(Ba
  sicDataSource.java:1452)
 
  at
  org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicData
  Source.java:1371)
 
  at
  org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSou
  rce.java:1044)
 
  at testPackage.DBTest.doGet(DBTest.java:62)
 
  at
  javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
 
  at
  javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
 
  at
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appli
  cationFilterChain.java:303)
 
  at
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFi
  lterChain.java:208)
 
  at
  org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
 
  at
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appli
  cationFilterChain.java:241)
 
  at
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFi
  lterChain.java:208)
 
  at
  org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperVa
  lve.java:220)
 
  at
  org.apache.catalina.core.StandardContextValve.invoke(StandardContextVa
  lve.java:122)
 
  at
  org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authenticat
  orBase.java:612)
 
  at
  org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.ja
  va:170)
 
  at
  org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.ja
  va:103)
 
  at
  org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:9

Re: Issue when using tomcat JDBC Connection Pool with a shared resource

2015-02-06 Thread Daniel Mikusa
On Fri, Feb 6, 2015 at 6:27 AM, Jean-Louis Mateo jean-louis.ma...@bull.net
wrote:

  Hi,



 I would like to use the Tomcat JDBC Connection Pool with a shared resource
 so I’ve read :

  http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Standalone and
 http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Resource_Links



 …. and tried to do the same but when I try to access to my servlet I get
 the following message:



 org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver
 of class '' for connect URL 'null'


A couple odd things here...

1.) It's trying to use DBCP, not the jdbc connection pool.
2.) It has no url or driver set.


  at
 org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)

 at
 org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)

 at
 org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)

 at testPackage.DBTest.doGet(DBTest.java:62)

 at
 javax.servlet.http.HttpServlet.service(HttpServlet.java:620)

 at
 javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

 at
 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)

 at
 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

 at
 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

 at
 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

 at
 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

 at
 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)

 at
 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)

 at
 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:612)

 at
 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)

 at
 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)

 at
 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)

 at
 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)

 at
 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)

 at
 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)

 at
 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)

 at
 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)

 at
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

 at
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

 at
 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

 at java.lang.Thread.run(Thread.java:745)

 Caused by: java.lang.NullPointerException

 at
 sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(JdbcOdbcDriver.java:524)

 at
 sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:493)

 at
 sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:307)

 at java.sql.DriverManager.getDriver(DriverManager.java:262)

 at
 org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)

 ... 25 more

 



 Environment :

 Win 7

 Java - jdk 1.7.0.65

 Tomcat - 7.0.57

 MySQL - 5.1.18



 



 Tomcat service properties:

 -Dcatalina.home=Y:\Programs\Tomcat\Tomcat7

 -Dcatalina.base=Y:\00-Prod\data\catalina

 -Djava.endorsed.dirs=Y:\Programs\Tomcat\Tomcat7\endorsed

 -Djava.io.tmpdir=Y:\Programs\Tomcat\Tomcat7\temp

 -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager


 -Djava.util.logging.config.file=Y:\Programs\Tomcat\Tomcat7\conf\logging.properties

 -Dcom.sun.management.jmxremote

 -Dcom.sun.management.jmxremote.port=8099

 -Dcom.sun.management.jmxremote.ssl=false

 -Dcom.sun.management.jmxremote.authenticate=false

 -XX:MaxPermSize=512m



 



 CATALINA_HOME/lib contents

 …

 tomcat-dbcp.jar

 tomcat-jdbc.jar

 …



 



 CATALINA_BASE/lib contents:

 mysql-connector-java-5.1.18-bin.jar

 



 CATALINA_BASE/conf/server.xml

 ...

 …

   GlobalNamingResources

…


What else do you have defined in this block?


  --

 Resource  name=sharedDataSource