Anonymous | Login | Signup for a new account | 12-17-2024 10:40 PST |
Main | My View | View Issues | Change Log | Docs |
Viewing Issue Advanced Details [ Jump to Notes ] | [ View Simple ] [ Issue History ] [ Print ] | ||||||||
ID | Category | Severity | Reproducibility | Date Submitted | Last Update | ||||
0000358 | [Resin] | minor | always | 08-18-05 00:00 | 11-30-05 14:42 | ||||
Reporter | user356 | View Status | public | ||||||
Assigned To | |||||||||
Priority | normal | Resolution | fixed | Platform | |||||
Status | closed | OS | |||||||
Projection | none | OS Version | |||||||
ETA | none | Fixed in Version | 3.0.15 | Product Version | 3.0.14 | ||||
Product Build | 3.0.14 | ||||||||
Summary | 0000358: Expected OraclePreparedStatement not returned from resin pool | ||||||||
Description |
RSN-402 In earlier versions of resin (3.0.6), a pooled connection returned from an oracle pool configured as below, returned (and still does) the expected OraclePreparedStatemnt or OraclePreparedCall. Once upgrading to 3.0.14, it seems a wrapper of some type is returned instead (com.caucho.sql.UserPreparedStatement). The casting is necessary to use oracle specific methods on the returned class for XML parameter handling. Is their a work-around for this (while still using the resin pooling mechanism)? Some method that returns the underlying object retruned from the driver? DB pool config (web.xml) <database> <jndi-name>jdbc-pool</jndi-name> <driver type="oracle.jdbc.pool.OracleConnectionPoolDataSource"> <url>jdbc:oracle:thin:@sauron:1521:epow</url> <user>epow</user> <password>epow</password> </driver> <prepared-statement-cache-size>8</prepared-statement-cache-size> <max-connections>5</max-connections> <max-idle-time>30s</max-idle-time> </database> Relevant JSP Code: <%! private DataSource pool = null; public void jspInit() { try { javax.naming.Context env = ( javax.naming.Context ) new InitialContext().lookup("java:comp/env"); pool = ( DataSource ) env.lookup( "jdbc-pool" ); if ( pool == null ) System.err.println( " ERROR: Unknown Data Source." ); } catch ( NamingException e ) { e.printStackTrace(); } } public void updateMember( Member member ) { Connection c = null; try { c = pool.getConnection(); // Following line causes ClassCastException now OraclePreparedStatement s = ( OraclePreparedStatement ) c.prepareStatement( "UPDATE member SET profile = ? WHERE member_id = ?" ); s.setOPAQUE( 1, XMLType.createXML( c, member.getCustomDataXML() ) ); s.setInt( 2, member.getMemberId() ); } catch( Exception e ) { e.printStackTrace(); } finally { try { if( c != null ) c.close(); } catch( Exception e ) { } } } %> Exception now thrown: java.lang.ClassCastException: com.caucho.sql.UserPreparedStatement at _jsp._pooltest__jsp.updateMember(_pooltest__jsp.java:52) at _jsp._pooltest__jsp._jspService(_pooltest__jsp.java:88) at com.caucho.jsp.JavaPage.service(JavaPage.java:60) at com.caucho.jsp.Page.pageservice(Page.java:570) at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:159) at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:163) at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:208) at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:259) at com.caucho.server.port.TcpConnection.run(TcpConnection.java:363) at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:490) at com.caucho.util.ThreadPool.run(ThreadPool.java:423) at java.lang.Thread.run(Thread.java:595) Thanks. |
||||||||
Steps To Reproduce | |||||||||
Additional Information | Solaris / Oracle 9i / Resin | ||||||||
Attached Files | |||||||||
|
Notes | |
(0000414) ferg 08-18-05 00:00 |
Added getPreparedStatement() to com.caucho.sql.UserPreparedStatement. |
Issue History | |||
Date Modified | Username | Field | Change |
08-18-05 00:00 | user356 | New Issue | |
11-30-05 00:00 | administrator | Fixed in Version | => 3.0.15 |
11-30-05 14:42 | ferg | Status | resolved => closed |
Mantis 1.0.0rc3[^]
Copyright © 2000 - 2005 Mantis Group
33 total queries executed. 27 unique queries executed. |