Re: Oracle Blob Clob Lob Problem

Josef Wagner <[email protected]>
Newsgroups gmane.comp.jakarta.ojb.user
Organization On-Ergy Systemberatung GmbH
Message-ID <[email protected]>
Hello Armin,

thanks for your spend time. I have found the failure, it was in the 
repository.xml, there I configured varchar instead of clob :o/
Next time, the first thing I will do is mailing the repository infos. So 
a simply failure :o/
Thanks
Josef


Armin Waibel schrieb:
> Josef Wagner wrote:
>> Hello Armin,
>> The problem width my outOfMemory apears also width 1.0.5
>> I have written a small test code an now I know, why I'm getting the 
>> outOfMemory width OJB. I think it is a "bug" in OJB, because you read 
>> the data from ResultSet width getString() instead of getClob(). Width 
>> getString(), i get the outOfMemory
>
> can you post more details. I checked the code ResultSet.getString(...) 
> is only called for Varchar and Char columns.
>
> If the log_data_export field in class Log is of type String, OJB 
> materialize the Clob and transforms the Clob value to a 
> string-representation.
> If you use Clob as type in Log class, OJB only wraps the Clob object - 
> the Clob value will not be materialized (if your jdbc-driver implement 
> LOB's as pointer objects to the real data).
> See LOB test case:
> http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/lob/LOBTest.java?view=markup 
>
>
> regards,
> Armin
>
>>
>> Here my test
>> -----------
>>    public void clobTest() {
>>        PersistenceBroker pb = getBroker();
>>              JdbcAccess jdbcAccess = pb.serviceJdbcAccess();
>>        ClassDescriptor logClassDesc = 
>> pb.getClassDescriptor(de.on_ergy.lakon.data.model.Log.class);
>>        ResultSetAndStatement rs = jdbcAccess.executeSQL("Select * 
>> from Log", logClassDesc, false);
>>        ResultSet r = rs.m_rs;
>>        Vector logDataExpVec = new Vector();
>>        Vector logDataDefaultVec = new Vector();
>>        try {
>>            while(r.next()) {
>>                logDataExpVec.addElement(r.getClob("log_data_export"));
>>                
>> logDataDefaultVec.addElement(r.getClob("log_data_default"));
>>            }
>>                  } catch(SQLException ex) {
>>            _log.error(ex);
>>        }
>>        _log.info("Fertig!!!");
>>    }
>>
>> -----
>>
>> How can we get a quick solution?
>> Thanks a lot for your spend time!
>>
>> regards, josef
>>
>>
>>
>> Armin Waibel schrieb:
>>>
>>> by the way, do your test pass if you set the 
>>> 'proxy-prefetching-limit' of the relevant class-descriptor or 
>>> reference/collection-descriptor's to '0'? Then OJB shouldn't 
>>> prefetch the references.
>>>
>>> regards,
>>> Armin
>>>
>>>
>>>
>>> Armin Waibel wrote:
>>>> Hi Josef,
>>>>
>>>> Josef Wagner wrote:
>>>>> Hello Armin,
>>>>>
>>>>> no, I have allready replaced all CGLib classes width JDK classes. My
>>>>> problem is, that i can't debug the following issue: -------- Caused
>>>>> by: java.lang.NullPointerException at 
>>>>> org.apache.ojb.broker.core.QueryReferenceBroker.access$000(QueryReferenceBroker.java:64) 
>>>>>
>>>>>
>>>>
>>>> I think this is the access from the inner class 
>>>> PBMaterializationListener to the private field 'pb' in class 
>>>> QueryReferenceBroker.
>>>> Decompiled code for QueryReferenceBroker:
>>>> ...
>>>> static org.apache.ojb.broker.core.PersistenceBrokerImpl 
>>>> access$000(org.apache.ojb.broker.core.QueryReferenceBroker);
>>>>   Code:
>>>>    0:   aload_0
>>>>    1:   getfield        #4; //Field 
>>>> pb:Lorg/apache/ojb/broker/core/PersistenceBrokerImpl;
>>>>    4:   areturn
>>>>
>>>>
>>>>>
>>>>> at 
>>>>> org.apache.ojb.broker.core.QueryReferenceBroker$PBMaterializationListener.addThisListenerTo(QueryReferenceBroker.java:990) 
>>>>>
>>>>>
>>>>>
>>>>> -------- <code> Line 990: _listenedHandler = 
>>>>> pb.getProxyFactory().getIndirectionHandler(owner); </code>
>>>>>
>>>>> pb is != null
>>>>>
>>>>> I have no idea :o/. Are there any no features, that I have to keep in
>>>>> mind?
>>>>>
>>>>
>>>> I remember that I got a similar ".access$000" error some weeks ago. 
>>>> But I can't remember the reason. I thought it was a proxy issue (do 
>>>> you get the same error when using CGLIB-proxy classes?) - but seems 
>>>> this isn't the reason.
>>>>
>>>> Could you describe or post the test source code to reproduce the 
>>>> issue?
>>>>
>>>> regards,
>>>> Armin
>>>>
>>>>
>>>>> regards, Josef
>>>>>
>>>>>
>>>>>
>>>>> Armin Waibel schrieb:
>>>>>> Hi Josef,
>>>>>>
>>>>>> could this be a proxy issue? Please check the settings in 
>>>>>> OJB.properties file - do you need CGLib based proxies?
>>>>>>
>>>>>> regards, Armin
>>>>>>
>>>>>> Josef Wagner wrote:
>>>>>>> Hi Armin, i tried to starting my application width 1.0.5, but no
>>>>>>> success. I can`t get any informations when looking into the log. 
>>>>>>> I think, it`s an Java Reflection Problem: Hier is the log output,
>>>>>>> have you any idee ?
>>>>>>>
>>>>>>> java.lang.reflect.InvocationTargetException at 
>>>>>>> org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:357) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.eclipse.jface.operation.ModalContext.run(ModalContext.java:291)
>>>>>>>  at 
>>>>>>> org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:447) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> de.on_ergy.lakon.rcp.dialog.LoginDialog.buttonPressed(LoginDialog.java:114) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at
>>>>>>> org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:556)
>>>>>>>  at 
>>>>>>> org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90) 
>>>>>>>
>>>>>>>  at
>>>>>>> org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66) 
>>>>>>> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:843) at 
>>>>>>> org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3125) 
>>>>>>>
>>>>>>>  at
>>>>>>> org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2758)
>>>>>>>  at org.eclipse.jface.window.Window.runEventLoop(Window.java:809)
>>>>>>>  at org.eclipse.jface.window.Window.open(Window.java:787) at
>>>>>>> de.on_ergy.base.ui.OnErgyDialog.open(OnErgyDialog.java:132) at 
>>>>>>> de.on_ergy.lakon.rcp.LakonWorkbenchWindowAdviser.postWindowOpen(LakonWorkbenchWindowAdviser.java:209) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.eclipse.ui.internal.WorkbenchWindow.fireWindowOpened(WorkbenchWindow.java:1070) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.eclipse.ui.internal.WorkbenchWindow.open(WorkbenchWindow.java:701) 
>>>>>>>
>>>>>>>  at 
>>>>>>> org.eclipse.ui.internal.Workbench.busyOpenWorkbenchWindow(Workbench.java:677) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.eclipse.ui.internal.Workbench.doOpenFirstTimeWindow(Workbench.java:1282) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.eclipse.ui.internal.Workbench.openFirstTimeWindow(Workbench.java:1223) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.eclipse.ui.internal.WorkbenchConfigurer.openFirstTimeWindow(WorkbenchConfigurer.java:190) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:706) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at org.eclipse.ui.internal.Workbench.init(Workbench.java:1034) at
>>>>>>> org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1636) at 
>>>>>>> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:367) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143) 
>>>>>>>
>>>>>>>  at
>>>>>>> de.on_ergy.lakon.rcp.RcpApplication.run(RcpApplication.java:44) 
>>>>>>> at 
>>>>>>> org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:226) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:376) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:163) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
>>>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at
>>>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
>>>>>>> at java.lang.reflect.Method.invoke(Unknown Source) at
>>>>>>> org.eclipse.core.launcher.Main.invokeFramework(Main.java:334) at
>>>>>>> org.eclipse.core.launcher.Main.basicRun(Main.java:278) at
>>>>>>> org.eclipse.core.launcher.Main.run(Main.java:973) at
>>>>>>> org.eclipse.core.launcher.Main.main(Main.java:948) Caused by:
>>>>>>> org.apache.ojb.broker.PersistenceBrokerException: 
>>>>>>> java.lang.NullPointerException at 
>>>>>>> org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java:290) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.apache.ojb.broker.core.PersistenceBrokerImpl.getCollectionByQuery(PersistenceBrokerImpl.java:1597) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(DelegatingPersistenceBroker.java:393) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.apache.ojb.broker.core.DelegatingPersistenceBroker.getCollectionByQuery(DelegatingPersistenceBroker.java:393) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> de.on_ergy.base.provider.OnErgyDataProviderOjb.select(OnErgyDataProviderOjb.java:518) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> de.on_ergy.lakon.data.DataProviderOjb.select(DataProviderOjb.java:1486) 
>>>>>>>
>>>>>>>  at 
>>>>>>> de.on_ergy.lakon.data.DataProviderOjb.select(DataProviderOjb.java:1473) 
>>>>>>>
>>>>>>>  at 
>>>>>>> de.on_ergy.base.provider.OnErgyDataProviderOjb.select(OnErgyDataProviderOjb.java:480) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at
>>>>>>> de.on_ergy.lakon.data.DataProvider.select(DataProvider.java:248) at
>>>>>>> de.on_ergy.lakon.bp.stammdaten.LakonBP.select(LakonBP.java:131) at
>>>>>>> de.on_ergy.lakon.rcp.dialog.LoginDialog$1.run(LoginDialog.java:97)
>>>>>>>  at 
>>>>>>> org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:346) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ... 36 more Caused by: java.lang.NullPointerException at 
>>>>>>> org.apache.ojb.broker.core.QueryReferenceBroker.access$000(QueryReferenceBroker.java:64) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.apache.ojb.broker.core.QueryReferenceBroker$PBMaterializationListener.addThisListenerTo(QueryReferenceBroker.java:990) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.apache.ojb.broker.core.QueryReferenceBroker$PBPrefetchingListener.<init>(QueryReferenceBroker.java:1048) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.apache.ojb.broker.core.QueryReferenceBroker$PBMaterializationListener.<init>(QueryReferenceBroker.java:985) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReference(QueryReferenceBroker.java:413) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.apache.ojb.broker.core.QueryReferenceBroker.retrieveReferences(QueryReferenceBroker.java:495) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIterator.java:490) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:280) 
>>>>>>>
>>>>>>>  at 
>>>>>>> org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java:143) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> at 
>>>>>>> org.apache.ojb.broker.core.QueryReferenceBroker.getCollectionByQuery(QueryReferenceBroker.java:277) 
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ... 47 more
>>>>>>>
>>>>>>>
>>>>>>> thanks for your help! regrads Josef
>>>>>>>
>>>>>>> Armin Waibel schrieb:
>>>>>>>> Hi Josef,
>>>>>>>>
>>>>>>>> Josef Wagner wrote:
>>>>>>>>> Hello List,
>>>>>>>>>
>>>>>>>>> I have a problem width loading large data from tables width 
>>>>>>>>> clob-culumns. db: oracle 9.2.0.8 ojb: 1.0.4 driver: thin
>>>>>>>>>
>>>>>>>>> When i load 15000 rows, my applikation gets an
>>>>>>>>> OutOfMemoryError. I have ensure, that Oracle width clobs is
>>>>>>>>> the problem, width HSQLDB, all works fine. The data in the
>>>>>>>>> clob-culumns are texts width AKTUALLY no more then 100
>>>>>>>>> charakters.
>>>>>>>>>
>>>>>>>>> I have checked out the trunk of ojb and I see, that in the
>>>>>>>>> platform package are some wrapper-classes for clob und blob?
>>>>>>>>
>>>>>>>> yep, I reworked the LOB-support a bit and add Blob/Clob
>>>>>>>> java-types support (before OJB converts all LOB's to byte[]).
>>>>>>>>
>>>>>>>>
>>>>>>>>> Unforunatelly, I can't test if this is the solution of my
>>>>>>>>> problem, because I get lots of errors when starting my
>>>>>>>>> application width a jar from the trunk version.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Don't use the trunk it's the alpha OJB 2.x. Please check out
>>>>>>>> the OJB_1_0_RELEASE branch it's the stable upcoming OJB 1.0.5
>>>>>>>> version.
>>>>>>>>
>>>>>>>>
>>>>>>>>> Can anybody tell me, if the source in the trunk is the
>>>>>>>>> solution for such problems I have?
>>>>>>>>
>>>>>>>> Don't know - give it a try.
>>>>>>>>
>>>>>>>>
>>>>>>>>> Or is the solution to switch to oralce 10g?
>>>>>>>>
>>>>>>>> I run the LOB-test against OracleXE 10.2.0.1 and 
>>>>>>>> classes12_g_10.2.0.2.jar driver. 
>>>>>>>> http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/lob/LOBTest.java?view=markup 
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> The tests handle CLOB's up to 5000 characters.
>>>>>>>>
>>>>>>>>> Or should I use OCI instead of THIN driver?
>>>>>>>>>
>>>>>>>> Sorry I don't know (not a Oracle expert).
>>>>>>>>
>>>>>>>> regards, Armin
>>>>>>>>
>>>>>>>>> Thanks a lot for your answers.
>>>>>>>>>
>>>>>>>>> regrads Josef Wagner
>>>>>>>>>
>>>>>>>>> --------------------------------------------------------------------- 
>>>>>>>>>
>>>>>>>>>  To unsubscribe, e-mail: [email protected] 
>>>>>>>>> For additional commands, e-mail: [email protected]
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> --------------------------------------------------------------------- 
>>>>>>>>
>>>>>>>>  To unsubscribe, e-mail: [email protected] For
>>>>>>>> additional commands, e-mail: [email protected]
>>>>>>>>
>>>>>>>
>>>>>>> --------------------------------------------------------------------- 
>>>>>>>
>>>>>>>  To unsubscribe, e-mail: [email protected] For
>>>>>>> additional commands, e-mail: [email protected]
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --------------------------------------------------------------------- 
>>>>>>
>>>>>>  To unsubscribe, e-mail: [email protected] For
>>>>>> additional commands, e-mail: [email protected]
>>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>>  To unsubscribe, e-mail: [email protected] For
>>>>> additional commands, e-mail: [email protected]
>>>>>
>>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [email protected]
>>>> For additional commands, e-mail: [email protected]
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.