Mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Josef Wagner <josef.wag...@on-ergy.de>
Subject Re: Oracle Blob Clob Lob Problem
Date Fri, 16 Feb 2007 08:04:19 GMT
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: 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
>

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