Thanks for the input Steve,
I agree that it SHOULDN'T be dbpc, but it looks as if it is.
Actually the driver does support it quite nicely. Everything works great if I create
my connection manually.
Things only break if I retrieve the connection from jndi ( and thus dbpc ).
//This can use getGeneratedKeys()
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn =
DriverManager.getConnection("jdbc:mysql://localhost:3306/testDB?user="+dbUser+"&password="+dbPass);
//This cannot......
javax.naming.Context ctx = new javax.naming.InitialContext();
javax.sql.DataSource ds =
(javax.sql.DataSource)ctx.lookup("java:comp/env/jdbc/testDB");
Connection conn = ds.getConnection();
As things stand now I must either give up connection pooling ( not a good option ) or
create a workaround through sql ( decreased performance through through additional
queries ).
Anybody know a way I can have both?
On Monday 21 October 2002 11:54 am, [EMAIL PROTECTED] wrote:
> Shawn,
>
> It shouldnt be DBCP that would cause getGeneratedKeys() to not work - its
> the JDBC Driver that doesnt support it - my (limited) knowledge of the
> various different databases is that very few support the JDBC 3.0
> specification yet so you might have to do a work-around.
>
> Its worth checking the MySQL web page to see what it supports right now but
> my guess is some subset of JDBC 2.0.....
>
> You'll probably HAVE to do a workaround by retrieving the new key or
> something else!
>
> Hope this helps,
> Steve
>
> -----Original Message-----
> From: shawn [mailto:shawn@;wnsi.net]
> Sent: Monday, October 21, 2002 1:36 PM
> To: [EMAIL PROTECTED]
> Subject: Unable to use getGeneratedKeys() through dbpc
>
>
> Hi folks,,,,,
>
> It seems to me that dbpc does not support getGeneratedKeys(). If I
> understand correctly this is a jdbc v3 call and it is possible that dbpc
> will not yet support jdbc3.
> I would appreciate any suggestions on alternative pooling mechanisms
> that could support this (Or any corrections if I am just being dumb).
> I would really rather not rely on queries to retrieve the new key
> after the insert.
>
> Here are the setup details......
>
> RedHat 7.3
> Tomcat 4.1.2
> MySQL Connector/J 3.0.1
>
> dbpc is working from within JSP, beans and servlets great, but chokes when
> requesting the generated key after an insert. Here is some code and
> exceptions........
>
>
> try {
>
> //Doing non-pooled connection works
> Class.forName("com.mysql.jdbc.Driver").newInstance();
> Connection conn =
> DriverManager.getConnection("jdbc:mysql://localhost:3306/testDB?user="+dbUs
>e r+"&password="+dbPass);
>
> /*
> //Doing dbpc provided connection throws an exception
> javax.naming.Context ctx = new javax.naming.InitialContext();
> javax.sql.DataSource ds =
> (javax.sql.DataSource)ctx.lookup("java:comp/env/jdbc/testDB");
> Connection conn = ds.getConnection();
> */
>
> Statement ste = conn.createStatement();
> ste.execute("INSERT INTO test (name) VALUES ('test name') ");
>
> ResultSet rs = ste.getGeneratedKeys();
> rs.next();
> out.print(rs.getInt("GENERATED_KEY"));
> }
> catch ( Exception e ) {
> out.print(e.getMessage());
> e.printStackTrace();
> }
>
>
> Here the message and stack trace
> org.apache.jasper.JasperException:
> org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys()Ljava/sql/Res
>u ltSet;
> at org.apache.jasper.servlet.JspServletWrapper.service(Unknown
> Source)
> at org.apache.jasper.servlet.JspServlet.serviceJspFile(Unknown
> Source)
> at org.apache.jasper.servlet.JspServlet.service(Unknown Source)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Unknown
> Source)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(Unknown
> Source)
> at org.apache.catalina.core.StandardWrapperValve.invoke(Unknown
> Source)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invo
>k eNext(Unknown Source)
> at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
> at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
> at org.apache.catalina.core.StandardContextValve.invoke(Unknown
> Source)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invo
>k eNext(Unknown Source)
> at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
> at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
> at org.apache.catalina.core.StandardContext.invoke(Unknown Source)
> at org.apache.catalina.core.StandardHostValve.invoke(Unknown
> Source) at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invo
>k eNext(Unknown Source)
> at org.apache.catalina.valves.ErrorDispatcherValve.invoke(Unknown
> Source)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invo
>k eNext(Unknown Source)
> at org.apache.catalina.valves.ErrorReportValve.invoke(Unknown
> Source)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invo
>k eNext(Unknown Source)
> at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
> at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
> at org.apache.catalina.core.StandardEngineValve.invoke(Unknown
> Source)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invo
>k eNext(Unknown Source)
> at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
> at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
> at
> org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConn
>e ction(Http11Protocol.java:380)
> at
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.ja
>v a:533)
> at java.lang.Thread.run(Thread.java:536)
> ----- Root Cause -----
> javax.servlet.ServletException:
> org.apache.commons.dbcp.DelegatingStatement.getGeneratedKeys()Ljava/sql/Res
>u ltSet;
> at
> org.apache.jasper.runtime.PageContextImpl.handlePageException(Unknown
> Source)
> at
> org.apache.jsp.testGeneratedKeys_jsp._jspService(testGeneratedKeys_jsp.java
>: 81)
> at org.apache.jasper.runtime.HttpJspBase.service(Unknown Source)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java)
> at org.apache.jasper.servlet.JspServletWrapper.service(Unknown
> Source)
> at org.apache.jasper.servlet.JspServlet.serviceJspFile(Unknown
> Source)
> at org.apache.jasper.servlet.JspServlet.service(Unknown Source)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Unknown
> Source)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(Unknown
> Source)
> at org.apache.catalina.core.StandardWrapperValve.invoke(Unknown
> Source)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invo
>k eNext(Unknown Source)
> at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
> at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
> at org.apache.catalina.core.StandardContextValve.invoke(Unknown
> Source)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invo
>k eNext(Unknown Source)
> at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
> at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
> at org.apache.catalina.core.StandardContext.invoke(Unknown Source)
> at org.apache.catalina.core.StandardHostValve.invoke(Unknown
> Source) at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invo
>k eNext(Unknown Source)
> at org.apache.catalina.valves.ErrorDispatcherValve.invoke(Unknown
> Source)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invo
>k eNext(Unknown Source)
> at org.apache.catalina.valves.ErrorReportValve.invoke(Unknown
> Source)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invo
>k eNext(Unknown Source)
> at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
> at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
> at org.apache.catalina.core.StandardEngineValve.invoke(Unknown
> Source)
> at
> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invo
>k eNext(Unknown Source)
> at org.apache.catalina.core.StandardPipeline.invoke(Unknown Source)
> at org.apache.catalina.core.ContainerBase.invoke(Unknown Source)
> at
> org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConn
>e ction(Http11Protocol.java:380)
> at
> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
> at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.ja
>v a:533)
> at java.lang.Thread.run(Thread.java:536)
--
To unsubscribe, e-mail: <mailto:tomcat-user-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:tomcat-user-help@;jakarta.apache.org>