db-ojb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Armin Waibel <arm...@apache.org>
Subject Re: Oracle Blob Clob Lob Problem
Date Thu, 15 Feb 2007 17:59:34 GMT
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: ojb-user-unsubscribe@db.apache.org
For 
>>>>>>>> additional commands, e-mail: ojb-user-help@db.apache.org
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> ---------------------------------------------------------------------

>>>>>>>
>>>>>>>  To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org For
>>>>>>> additional commands, e-mail: ojb-user-help@db.apache.org
>>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>>  To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org For
>>>>>> additional commands, e-mail: ojb-user-help@db.apache.org
>>>>>>
>>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>>  To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org For
>>>>> additional commands, e-mail: ojb-user-help@db.apache.org
>>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>>  To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org For
>>>> additional commands, e-mail: ojb-user-help@db.apache.org
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
>>> For additional commands, e-mail: ojb-user-help@db.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
>> For additional commands, e-mail: ojb-user-help@db.apache.org
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Mime
View raw message