|
From: Thomas R. <tho...@tr...> - 2004-06-01 01:41:48
|
FWIW, the latest Oracle 10g JDBC driver seems to support standard JDBC
syntax even for CLOBS that are more than 4k. What took them so long? :-)
This did work with a large CLOB
Reader r = new StringReader(newString);
ps.setCharacterStream(3, r, newString.length());
Thomas
Thomas Risberg wrote:
> The WebLogic wrappers are dynamic proxies and they supposedly support
> whatever the underlying connection supports, including any
> extendsions. See
> http://dev2dev.bea.com/products/wlserver81/articles/WLS81JDBC.jsp
>
> I'll keep trying. Will see if we can create a
> WebLogicNativeJdbcExtractor based on what Bronwen discovered.
>
> Thomas
>
>
> jürgen höller [werk3AT] wrote:
>
>> 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=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
>
>
>
|