From: Thomas R. <tho...@tr...> - 2004-06-01 03:20:53
|
Bronwen, This was a good exercise. Thanks for your help tracking things down. I have added a WebLogicNativeJdbcExtractor that uses reflection. We probably should test this in WLS 6.1 and 7.0 as well. Juergen - do you want to wait for 1.0.3 so we have more time to test and refine it. It's in the sandbox for now. Thomas Bronwen Cassidy wrote: >The last message, I got it :-) now I just want to laugh.. the method to get >the native driver is: > >// con is cast to weblogic.jdbc.wrapper.PoolConnection, this returns the >oracle.jdbc.OracleConnection and from there it all works, now to figure out >all the others :-) >public Connection getNativeConnection(Connection con) throws SQLException { > PoolConnection pConnection = (PoolConnection) con; > return pConnection.getVendorConnection(); > } > >I am happy to send this to you, problem would be it would need weblogic.jar >:-( as it is specific cast, unless I used reflection, let me know what you >would like, send it, use reflection etc etc. > >And a million thanx for all your help >All the best to spring >Bronwen > >-----Original Message----- >From: spr...@li... >[mailto:spr...@li...] On Behalf Of >jürgen höller [werk3AT] >Sent: 31 May 2004 23:39 >To: spr...@li... >Subject: Re: [Springframework-developer] OracleLobCreator > >OK, seems like Weblogic's pool is among the ones that completely wrap all >JDBC objects: You don't even get the native Connection on >getMetaData().getConnection()... > >So I'm afraid you'll have to write a WeblogicNativeJdbcExtractor that knows >how to unwrap weblogic.jdbc.wrapper.PoolConnection. Check the latter's >signatures: Does it have a method like "getPhysicalConnection()"? Such a >method would be that basis for implementing getNativeConnection. > >Juergen > > >________________________________ > >Von: spr...@li... im Auftrag von >Bronwen Cassidy >Gesendet: Di 01.06.2004 01:20 >An: spr...@li... >Betreff: RE: [Springframework-developer] re: OracleLobCreator > > > >Hi, >If I understand your question, OracleLobHandler works in a test case without >weblogics pool, only using the oracle.jdbc.pool.OracleDataSource datasource >bean defined as: ><bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource"> > <property >name="driverType"><value>oracle.jdbc.OracleDriver</value></property> > <property >name="URL"><value>jdbc:oracle:thin:@localhost:1521:ROBIN</value></property> > <property name="user"><value>talentstudio</value></property> > <property >name="password"><value>talentstudio</value></property> > </bean> >In deployment I have set up a weblogic pool using oracle thin driver, not a >weblogic oracle driver. > >So from what I can determine weblogic pool + oracle driver + >oracleLobHandler throws the exception and >Oracle jdbc pool + oracleLobHandler (as in test case) works. > >The printouts: > >template.getDataSource().getConnection()= >weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_OracleConnection@112 > >connection.getMetaData().getConnection() = >weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_OracleConnection@112 > >-----Original Message----- >From: spr...@li... >[mailto:spr...@li...] On Behalf Of >jürgen höller [werk3AT] >Sent: 31 May 2004 22:52 >To: spr...@li... >Subject: Re: [Springframework-developer] re: OracleLobCreator > >Can you check what kind of wrappers the DataSource returns? Simply fetch the >DataSource, invoke getConnection() and see what kind of handle it returns >(System.out.println). Furthermore, invoke >getConnection().getMetaData().getConnection() and see whether this is the >native Connection (System.out.println again). > >However, if you have properly specified SimpleNativeJdbcExtractor for >OracleLobHandler's "nativeJdbcExtractor" property and still get that >exception, then I assume that Weblogic's own Oracle JDBC driver doesn't use >the OracleConnection class at all. This would mean that OracleLobHandler >cannot be used with it. > >Do I understand correctly that OracleLobHandler plus >SimpleNativeJdbcExtractor work properly with Oracle's original JDBC driver >plus Weblogic's connection pool? > >Juergen > > >________________________________ > >Von: spr...@li... im Auftrag von >Bronwen Cassidy >Gesendet: Di 01.06.2004 00:24 >An: spr...@li... >Betreff: RE: [Springframework-developer] re: OracleLobCreator > > > >Hi, > >OK the results when changing the driver for the pool from jdbc:oracle:thin >to: jdbc:weblogic:oracle using SimpleNativeJdbcExtractor > > >Error: >org.springframework.dao.DataAccessResourceFailureException: Could not create >Oracle LOB; nested exception is org.springframework.dao.In >validDataAccessApiUsageException: OracleLobHandler needs to work on >oracle.jdbc.OracleConnection - specify a proper NativeJdbcExtractor > >org.springframework.dao.InvalidDataAccessApiUsageException: OracleLobHandler >needs to work on oracle.jdbc.OracleConnection - specify a >proper NativeJdbcExtractor > at >org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.getOr >acleConnection(OracleLobHandler.java:366) > at >org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.creat >eLob(OracleLobHandler.java:336) > at >org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.setCl >obAsString(OracleLobHandler.java:264) > at >com.zynap.talentstudio.dao.jdbc.oracle.datamanipulation.PortfolioDataManipul >ation$1.setValues(PortfolioDataManipulation.java >:50) > at >org.springframework.jdbc.core.support.AbstractLobCreatingPreparedStatementCa >llback.doInPreparedStatement(AbstractLobCreating >PreparedStatementCallback.java:71) > at >org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:292) > at >org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:308) > >-----Original Message----- >From: spr...@li... >[mailto:spr...@li...] On Behalf Of >tho...@tr... >Sent: 31 May 2004 21:47 >To: spr...@li... >Subject: Re: [Springframework-developer] re: OracleLobCreator > > >I was finally able to reproduce the error in my own environment using Spring >1.0.1. I will try 1.0.2 (current CVS) and see what happens. > >Thomas > > >Here is my stack trace: > >org.springframework.dao.DataAccessResourceFailureException: Could not create >Oracle LOB; nested exception is java.lang.ClassCastException: null >java.lang.ClassCastException > at >oracle.jdbc.driver.OracleConnection.unwrapCompletely(OracleConnection.java:5 >090) > at >oracle.jdbc.driver.OracleConnection.physicalConnectionWithin(OracleConnectio >n.java:5141) > at oracle.sql.CLOB.createTemporary(CLOB.java:1009) > at oracle.sql.CLOB.createTemporary(CLOB.java:956) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at >sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39 >) > at >sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl >.java:25) > at java.lang.reflect.Method.invoke(Method.java:324) > at >org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.prepa >reLob(OracleLobHandler.java:375) > at >org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.creat >eLob(OracleLobHandler.java:327) > at >org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.setCl >obAsString(OracleLobHandler.java:255) > at org.buggybean.web.TestServlet.doGet(TestServlet.java:94) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) > at >weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(Servle >tStubImpl.java:971) > at >weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java >:402) > at >weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java >:305) > at >weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(W >ebAppServletContext.java:6350) > at >weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubjec >t.java:317) > at >weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118) > at >weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo >ntext.java:3635) > at >weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java >:2585) > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197) > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170) > > > > >Quoting "jürgen höller [werk3AT]" <jue...@we...>: > > > >>Changing the pool should just affect the NativeJdbcExtractor choice, = >>i.e. a different bean wired to OracleLobHandler's "nativeJdbcExtractor" = >>property. >>=20 >>Give SimpleNativeJdbcExtractor a try with a Weblogic pool; there's a = >>good chance that it will work, avoiding the need for a specific Weblogic = >>implementation of the NativeJdbcExtractor interface. >>=20 >>As of Spring 1.0.2, SimpleNativeJdbcExtractor will even work with = >>Commons DBCP too, avoiding the need for a different NativeJdbcExtractor = >>configuration when switching between Commons DBCP and another pool. >>=20 >>Side note: The new version of SimpleNativeJdbcExtractor will also work = >>with C3P0. This allows the use of C3P0's ComboPooledDataSource as direct = >>replacement of Commons DBCP's BasicDataSource. >>=20 >>Juergen >>=20 >> >>________________________________ >> >>Von: spr...@li... im Auftrag = >>von Bronwen Cassidy >>Gesendet: Mo 31.05.2004 22:25 >>An: spr...@li... >>Betreff: Re: [Springframework-developer] re: OracleLobCreator >> >> >> >>Hi >>I have no concern as to the pool i use, i am actually >>completely ignorant and have been blindly feeling my >>way using the spring test cases, samples, docs and >>some googling, until 4 months ago i had never used >>oracle and until a week ago i did not need to do more >>than work out db agnostic sql queries :-) >> >>so please i am more than happy to use weblogic pool, >>which i am using when the app is deployed, hence the >>test time passes and deploy time failures most >>likely!! I am guessing the changes are needed in the >>nativeJdbcExtractor class in the spring.xml needs to >>point to a weblogic equivalent?? >> >> --- Thomas Risberg <tho...@tr...> wrote: >> >> >>>Since you are using the Commons DBCP rather than a >>>WebLogic pool the >>>issue is slightly different. We have to figure out >>>why the connection >>>returned from the DBCP pool is not unwrapped >>>properly. >>> >>>Thomas >>> >>> >>>Bronwen Cassidy wrote: >>> >>> >>> >>>>Thank-you Jurgen >>>>This was the approach i had come to conclude as the >>>>only difference between passing test case and >>>> >>>> >>>failing >>> >>> >>>>deployed app is the connection pool handled by >>>>weblogic , ahh well another trip into the unknown, >>>> >>>> >>>the >>> >>> >>>>best part of being a developer ;-) >>>> >>>>regards >>>>Bronwen >>>> >>>>--- j=FCrgen_h=F6ller_[werk3AT] >>>><jue...@we...> wrote: > >>>>OracleLobHandler needs to work on a native >>>>=20 >>>> >>>> >>>> >>>>>OracleConnection as it comes from the driver. The >>>>>usual problem in that respect is not the driver >>>>> >>>>> >>>but >>> >>> >>>>>the connection pool: Every connection pool needs >>>>> >>>>> >>>to >>> >>> >>>>>wrap native connections with pooled connections >>>>> >>>>> >>>that >>> >>> >>>>>at least have different closing behavior. >>>>> >>>>>To address this, OracleLobHandler has the >>>>>"nativeJdbcExtractor" property, taking an >>>>>implementation of Spring's NativeJdbcExtractor >>>>>interface. Spring includes out-of-the-box >>>>>implementations for Commons DBCP, XAPool, and >>>>> >>>>> >>>JBoss. >>> >>> >>>>>I guess what you need to do is write such an >>>>>extractor for Weblogic. >>>>> >>>>>What's odd about your exception is that >>>>>OracleLobCreator does not complain that it doesn't >>>>>receive an OracleConnection (there's an explicit >>>>>check in there). It seems to get a wrapped >>>>>connection that is still assignable to >>>>>OracleConnection, although it's not the native >>>>>OracleConnection from the driver... >>>>> >>>>>Maybe Weblogic uses some special way of pooling >>>>>connections for the Oracle driver, using poolable >>>>>OracleConnections? The getPhysicalConnection >>>>> >>>>> >>>method >>> >>> >>>>>will probably be in the OracleConnection class, >>>>> >>>>> >>>not >>> >>> >>>>>in the CLOB class. Try writing a >>>>> >>>>> >>>NativeJdbcExtractor >>> >>> >>>>>that unwraps an OracleConnection with that method. >>>>> >>>>> >>>>>Juergen >>>>> >>>>> >>>>>________________________________ >>>>> >>>>>Von: >>>>> >>>>> =20 >>>>> >>>>> >>>>> >>>spr...@li... >>> >>> >>>>=20 >>>> >>>> >>>> >>>>>im Auftrag von Bronwen Cassidy >>>>>Gesendet: Mo 31.05.2004 04:27 >>>>>An: >>>>> >>>>> >>>spr...@li... >>> >>> >>>>>Betreff: RE: [Springframework-developer] re: >>>>>OracleLobCreator >>>>> >>>>> >>>>> >>>>>Hi I have: >>>>> >>>>>Weblogic 8 service pack 2 >>>>>ojdbc.jar (Oracle9i 9.2.0.1 JDBC Drivers) >>>>>Oracle9i >>>>>I have set up the connection pool using the >>>>>jdbc:oracle:thin (oracle thin >>>>>drivers (not weblogic ones) >>>>> >>>>>Actually I managed to find some information (very >>>>>little) one from a >>>>>hibernate mail, suggested using the >>>>>getPhysicalConnection() instead of >>>>>createTemporary, but this method does not seem to >>>>>available on the CLOB >>>>>class?? >>>>> >>>>>-----Original Message----- >>>>>From: >>>>> >>>>> =20 >>>>> >>>>> >>>>> >>>spr...@li... >>> >>> >>>>=20 >>>> >>>> >>>> >>>[mailto:spr...@li...] >>> >>> >>>>=20 >>>> >>>> >>>> >>>>>On Behalf Of >>>>>Thomas Risberg >>>>>Sent: 31 May 2004 02:09 >>>>>To: >>>>> >>>>> >>>spr...@li... >>> >>> >>>>>Subject: Re: [Springframework-developer] re: >>>>>OracleLobCreator >>>>> >>>>>Bronwen, >>>>> >>>>>In order to pinpoint the problem quicker - what >>>>>version of WebLogic, >>>>>Oracle and JDBC drivers are you using? >>>>> >>>>>Thomas >>>>> >>>>>Bronwen Cassidy wrote: >>>>> >>>>> =20 >>>>> >>>>> >>>>> >>>>>>Hi I have a CLOB column in oracle and in the test >>>>>> =20 >>>>>> >>>>>> >>>>>> >>>>>there are no >>>>> =20 >>>>> >>>>> >>>>> >>>>>>problems, unfortunately deploying to weblogic I >>>>>> =20 >>>>>> >>>>>> >>>>>> >>>>>get the exception >>>>> =20 >>>>> >>>>> >>>>> >>>>>>below. We are using classes12.jar whereas >>>>>> >>>>>> >>>weblogic >>> >>> >>>>>> =20 >>>>>> >>>>>> >>>>>> >>>>>uses ojdbc14.jar, I >>>>> =20 >>>>> >>>>> >>>>> >>>>>>firstly replaced weblogics jars and classpath >>>>>> =20 >>>>>> >>>>>> >>>>>> >>>>>settings to use the >>>>> =20 >>>>> >>>>> >>>>> >>>>>>classes12.jar, but got the same error, so I >>>>>> >>>>>> >>>pulled >>> >>> >>>>>> =20 >>>>>> >>>>>> >>>>>> >>>>>weblogic oracle jar >>>>> =20 >>>>> >>>>> >>>>> >>>>>>into my test classpath to test if the problem was >>>>>> =20 >>>>>> >>>>>> >>>>>> >>>>>with the jars but >>>>> =20 >>>>> >>>>> >>>>> >>>>>>the test worked fine ?? I am really stuck as to >>>>>> =20 >>>>>> >>>>>> >>>>>> >>>>>whom this should go to >>>>> =20 >>>>> >>>>> >>>>> >>>>>>weblogic, oracle, or . I am hoping there is an >>>>>> =20 >>>>>> >>>>>> >>>>>> >>>>>expert there who can >>>>> =20 >>>>> >>>>> >>>>> >>>>>>shed some light. Google did not have a single >>>>>> =20 >>>>>> >>>>>> >>>>>> >>>>>match for variations of >>>>> =20 >>>>> >>>>> >>>>> >>>>>>the first 2 lines!! >>>>>> >>>>>>java.lang.ClassCastException >>>>>> >>>>>>at >>>>>> >>>>>> =20 >>>>>> >>>>>> >>>>>> >>>oracle.jdbc.driver.OracleConnection.unwrapCompletely(OracleConnection.ja= >>> >>> >>va:5 >> >> >>>>=20 >>>> >>>> >>=3D=3D=3D message truncated =3D=3D=3D >> >> >> =20 >> =20 >> =20 >>____________________________________________________________ >>Yahoo! Messenger - Communicate instantly..."Ping" >>your friends today! Download Messenger Now >>http://uk.messenger.yahoo.com/download/index.html >> >> >>------------------------------------------------------- >>This SF.Net email is sponsored by: Oracle 10g >>Get certified on the hottest thing ever to hit the market... Oracle 10g. >>Take an Oracle 10g class now, and we'll give you the exam FREE. >>http://ads.osdn.com/?ad_id=3D3149&alloc_id=3D8166&op=3Dclick >>_______________________________________________ >>Springframework-developer mailing list >>Spr...@li... >>https://lists.sourceforge.net/lists/listinfo/springframework-developer >> >> >> >> >>------------------------------------------------------- >>This SF.Net email is sponsored by: Oracle 10g >>Get certified on the hottest thing ever to hit the market... Oracle 10g. >>Take an Oracle 10g class now, and we'll give you the exam FREE. >>http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click >>_______________________________________________ >>Springframework-developer mailing list >>Spr...@li... >>https://lists.sourceforge.net/lists/listinfo/springframework-developer >> >> >> > > > > > >------------------------------------------------------- >This SF.Net email is sponsored by: Oracle 10g >Get certified on the hottest thing ever to hit the market... Oracle 10g. >Take an Oracle 10g class now, and we'll give you the exam FREE. >http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click >_______________________________________________ >Springframework-developer mailing list >Spr...@li... >https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > >------------------------------------------------------- >This SF.Net email is sponsored by: Oracle 10g >Get certified on the hottest thing ever to hit the market... Oracle 10g. >Take an Oracle 10g class now, and we'll give you the exam FREE. >http://ads.osdn.com/?ad_id149&alloc_id66&op=ick >_______________________________________________ >Springframework-developer mailing list >Spr...@li... >https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > >------------------------------------------------------- >This SF.Net email is sponsored by: Oracle 10g >Get certified on the hottest thing ever to hit the market... Oracle 10g. >Take an Oracle 10g class now, and we'll give you the exam FREE. >http://ads.osdn.com/?ad_id149&alloc_id66&op=ick >_______________________________________________ >Springframework-developer mailing list >Spr...@li... >https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > >------------------------------------------------------- >This SF.Net email is sponsored by: Oracle 10g >Get certified on the hottest thing ever to hit the market... Oracle 10g. >Take an Oracle 10g class now, and we'll give you the exam FREE. >http://ads.osdn.com/?ad_id149&alloc_id66&op=ick >_______________________________________________ >Springframework-developer mailing list >Spr...@li... >https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > >------------------------------------------------------- >This SF.Net email is sponsored by: Oracle 10g >Get certified on the hottest thing ever to hit the market... Oracle 10g. >Take an Oracle 10g class now, and we'll give you the exam FREE. >http://ads.osdn.com/?ad_id149&alloc_id66&op=ick >_______________________________________________ >Springframework-developer mailing list >Spr...@li... >https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > >------------------------------------------------------- >This SF.Net email is sponsored by: Oracle 10g >Get certified on the hottest thing ever to hit the market... Oracle 10g. >Take an Oracle 10g class now, and we'll give you the exam FREE. >http://ads.osdn.com/?ad_id149&alloc_id66&op=click >_______________________________________________ >Springframework-developer mailing list >Spr...@li... >https://lists.sourceforge.net/lists/listinfo/springframework-developer > > > > > |