|
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
>
>
>
>
>
|