You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Emmanuel Dupont <em...@jwaretechnologies.com> on 2003/03/27 18:57:38 UTC

Dynamic proxy

IS there someone who use the Dynamic proxy and who can tell that it is
working well ?

 

I had some many trouble and some many very weird behaviours that I decide to
not use it.

It is a pity because it is very useful !

 

 


RE : Dynamic proxy

Posted by Emmanuel Dupont <em...@jwaretechnologies.com>.
Hi Thomas, all

I really sorry not to be able to make the dynamic Proxies by my own.....But
I am afraid that I really don't manage to make it works by myself....
Something should have makes me wrong.

Here is an easy sample of my Proxy use who doesn't work correctly ...


I have 5 objects (represent tables) Aver,Bgra,Casd,Dcat,Esas with these
relationships :

Aver			Bgra		Casd		Dcat
Esas
-------			-------		-------		-----
--------- 
aVER_ID_PK		gRA_ID_PK	aSD_ID_PK	cAT_ID_PK
sAS_ID_PK
			gRA-NAME	aSD_NAME	cAT_NAME
sAS_NAME
			aVER_ID_FK	aVER_ID_FK	aVER_ID_FK
aSD_ID_FK
					aCAT_ID_FK
gRA_ID_FK
	

I have this in my source code:

Class Aver implements InterfaceAver {
public long id
long getId() {...}
void setId(long id) { ...}
[...]
}


Interface Aver {
//no long id; declaration;
long getId() {...}
void setId(long id) { ...}
}

Class Bgra {
public InterfaceAver aVER_ID_PK;
InterfaceAver  getAVER_ID_PK() {...}
void setAver(InterfaceAver aver) {...}
[...]
}


In my main () {
Criteria crit = new Criteria();
crit.addEqualTo("gRA_NAME", "Smith");
Query q = QueryFactory.newQuery(Bgra.class, crit);

broker.beginTransaction();
Collection results = broker.getCollectionByQuery(q);
Bgra graEdited;		
Iterator iter = results.iterator();		
while (iter.hasNext()) {
	graEdited = (Bgra)iter.next();
}
broker.commitTransaction();
}

I declared for Aver and Bgra in the repository.xml like this :

<class-descriptor 
  class="Aver"
  proxy="dynamic"
  table="AVER">
  <field-descriptor id="0"
    name="aVER_ID_PK"
    column="AVER_ID_PK"
    jdbc-type="BIGINT"
    primarykey="true"
  />
  <collection-descriptor
    name="collBgra"
    element-class-ref="Bgra"
    auto-retrieve="true"
    auto-update="false"
    auto-delete="false">
    <inverse-foreignkey field-ref="aVER_ID_PK"    />
  </collection-descriptor>
  <collection-descriptor
    name="collCasd"
    element-class-ref="Casd"
    auto-retrieve="true"
    auto-update="false"
    auto-delete="false">
    <inverse-foreignkey field-ref="aVER_ID_PK"    />
  </collection-descriptor>
  <collection-descriptor
    name="collDcat"
    element-class-ref="Dcat"
    auto-retrieve="true"
    auto-update="false"
    auto-delete="false">
    <inverse-foreignkey field-ref="aVER_ID_PK"    />
  </collection-descriptor>
</class-descriptor>		


<class-descriptor 
  class="Bgra"
  table="BGRA">
  <field-descriptor id="0"
    name="gRA_ID_PK"
    column="GRA_ID_PK"
    jdbc-type="BIGINT"
    primarykey="true"
  />
  <field-descriptor id="1"
    name="gRA_NAME"
    column="GRA_NAME"
    jdbc-type="VARCHAR"
  />
  <field-descriptor id="2"
    name="aVER_ID_PK"
    column="VER_ID_PK"
    jdbc-type="BIGINT"
  />
  <reference-descriptor
    name="aAVER_ID_PK"
    class-ref="Aver"
    auto-retrieve="true"
    auto-update="false"
    auto-delete="false">
<foreignkey field-ref="aVER_ID_PK" />
  </reference-descriptor>
  <collection-descriptor
    name="collEsas"
    element-class-ref="Esas"
    auto-retrieve="true"
    auto-update="false"
    auto-delete="false">
    <inverse-foreignkey field-ref="gRA_ID_FK"    />
  </collection-descriptor>

</class-descriptor>



An I have this error:

JSQLConnect(2.3007) Trial license - expires on:Sat Apr 19 03:24:23 CEST
2003, unlimited connections
[org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl]
ERROR: while set field: 
object class[ Bgra
target field: aAVER_ID_PK
target field type: Aver
object value class: $Proxy0
object value: [Id] 15]
java.lang.IllegalArgumentException
	at
sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.
java:63)
	at java.lang.reflect.Field.set(Field.java:519)
	at
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl.set(Pe
rsistentFieldDefaultImpl.java:147)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(Persi
stenceBrokerImpl.java:1035)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReferences(Pers
istenceBrokerImpl.java:1013)
	at
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIterat
or.java:426)
	at
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:235)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1280)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1406)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1452)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollection(Pers
istenceBrokerImpl.java:1090)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollections(Per
sistenceBrokerImpl.java:1134)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(Persistence
BrokerImpl.java:1529)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity(Per
sistenceBrokerImpl.java:1632)
	at
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getObjectByIdenti
ty(DelegatingPersistenceBroker.java:284)
	at
org.apache.ojb.broker.accesslayer.IndirectionHandler.materializeSubject(Indi
rectionHandler.java:290)
	at
org.apache.ojb.broker.accesslayer.IndirectionHandler.getRealSubject(Indirect
ionHandler.java:277)
	at
org.apache.ojb.broker.accesslayer.IndirectionHandler.invoke(IndirectionHandl
er.java:246)
	at $Proxy0.toString(Unknown Source)
	at java.lang.String.valueOf(String.java:2177)
	at java.lang.StringBuffer.append(StringBuffer.java:361)
	at
org.apache.ojb.broker.util.BrokerHelper.buildMessageString(BrokerHelper.java
:471)
	at
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl.set(Pe
rsistentFieldDefaultImpl.java:164)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(Persi
stenceBrokerImpl.java:1035)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReferences(Pers
istenceBrokerImpl.java:1013)
	at
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIterat
or.java:426)
	at
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:235)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1280)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1406)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1452)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1439)
	at
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getCollectionByQu
ery(DelegatingPersistenceBroker.java:310)
	at businessobjects.BO.getInformation(BO.java:61)
	at businessobjects.Application.run(Application.java:53)
	at businessobjects.Application.main(Application.java:36)
rethrown as org.apache.ojb.broker.metadata.MetadataException: Error setting
field:aAVER_ID_PK in object:Bgra
	at
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl.set(Pe
rsistentFieldDefaultImpl.java:165)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(Persi
stenceBrokerImpl.java:1035)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReferences(Pers
istenceBrokerImpl.java:1013)
	at
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIterat
or.java:426)
	at
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:235)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1280)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1406)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1452)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollection(Pers
istenceBrokerImpl.java:1090)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollections(Per
sistenceBrokerImpl.java:1134)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(Persistence
BrokerImpl.java:1529)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity(Per
sistenceBrokerImpl.java:1632)
	at
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getObjectByIdenti
ty(DelegatingPersistenceBroker.java:284)
	at
org.apache.ojb.broker.accesslayer.IndirectionHandler.materializeSubject(Indi
rectionHandler.java:290)
	at
org.apache.ojb.broker.accesslayer.IndirectionHandler.getRealSubject(Indirect
ionHandler.java:277)
	at
org.apache.ojb.broker.accesslayer.IndirectionHandler.invoke(IndirectionHandl
er.java:246)
	at $Proxy0.toString(Unknown Source)
	at java.lang.String.valueOf(String.java:2177)
	at java.lang.StringBuffer.append(StringBuffer.java:361)
	at
org.apache.ojb.broker.util.BrokerHelper.buildMessageString(BrokerHelper.java
:471)
	at
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl.set(Pe
rsistentFieldDefaultImpl.java:164)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(Persi
stenceBrokerImpl.java:1035)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReferences(Pers
istenceBrokerImpl.java:1013)
	at
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIterat
or.java:426)
	at
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:235)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1280)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1406)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1452)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1439)
	at
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getCollectionByQu
ery(DelegatingPersistenceBroker.java:310)
	at businessobjects.BO.getInformation(BO.java:61)
	at businessobjects.Application.run(Application.java:53)
	at businessobjects.Application.main(Application.java:36)
Caused by: java.lang.IllegalArgumentException
	at
sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.
java:63)
	at java.lang.reflect.Field.set(Field.java:519)
	at
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl.set(Pe
rsistentFieldDefaultImpl.java:147)
	... 32 more
rethrown as org.apache.ojb.broker.PersistenceBrokerException: Error
invoking:toString: Could not obtain next object: Error setting
field:aAVER_ID_PK in object:Bgra
	at
org.apache.ojb.broker.accesslayer.IndirectionHandler.invoke(IndirectionHandl
er.java:264)
	at $Proxy0.toString(Unknown Source)
	at java.lang.String.valueOf(String.java:2177)
	at java.lang.StringBuffer.append(StringBuffer.java:361)
	at
org.apache.ojb.broker.util.BrokerHelper.buildMessageString(BrokerHelper.java
:471)
	at
org.apache.ojb.broker.metadata.fieldaccess.PersistentFieldDefaultImpl.set(Pe
rsistentFieldDefaultImpl.java:164)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(Persi
stenceBrokerImpl.java:1035)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReferences(Pers
istenceBrokerImpl.java:1013)
	at
org.apache.ojb.broker.accesslayer.RsIterator.getObjectFromResultSet(RsIterat
or.java:426)
	at
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:235)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1280)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1406)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1452)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1439)
	at
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getCollectionByQu
ery(DelegatingPersistenceBroker.java:310)
	at businessobjects.BO.getInformation(BO.java:61)
	at businessobjects.Application.run(Application.java:53)
	at businessobjects.Application.main(Application.java:36)
Caused by: org.apache.ojb.broker.PersistenceBrokerException: Could not
obtain n[org.apache.ojb.broker.accesslayer.RsIterator] ERROR: Error
invoking:toString: Could not obtain next object: Error setting
field:aAVER_ID_PKr in object:Bgra
ext object: Error setting field:aVER_Id_PK in object:Bgra
	at
org.apache.ojb.broker.accesslayer.IndirectionHandler.materializeSubject(Indi
rectionHandler.java:300)
	at
org.apache.ojb.broker.accesslayer.IndirectionHandler.getRealSubject(Indirect
ionHandler.java:277)
	at
org.apache.ojb.broker.accesslayer.IndirectionHandler.invoke(IndirectionHandl
er.java:246)
	... 17 more
Caused by: java.util.NoSuchElementException: Could not obtain next object:
Error setting field:aAVER_ID_PK in object:Bgra
	at
org.apache.ojb.broker.accesslayer.RsIterator.next(RsIterator.java:250)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1280)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1406)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getCollectionByQuery(Pe
rsistenceBrokerImpl.java:1452)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollection(Pers
istenceBrokerImpl.java:1090)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.retrieveCollections(Per
sistenceBrokerImpl.java:1134)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(Persistence
BrokerImpl.java:1529)
	at
org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity(Per
sistenceBrokerImpl.java:1632)
	at
org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getObjectByIdenti
ty(DelegatingPersistenceBroker.java:284)
	at
org.apache.ojb.broker.accesslayer.IndirectionHandler.materializeSubject(Indi
rectionHandler.java:290)
Exception in thread "main" 


What is very weird is when I put InterfaceAver in the repository like this:

<class-descriptor 
  class="InterfaceAver">
</class-descriptor>

and in the Bgra descriptor :
  <reference-descriptor
    name="aAVER_ID_PK"
    class-ref="InterfaceAver"
    auto-retrieve="true"
    auto-update="false"
    auto-delete="false">
<foreignkey field-ref="aVER_ID_PK" />
  </reference-descriptor>

It is working but only for one object. If I put Interfacexxx for all my
dynamic proxies, it failled....

Am I nuts ?? ............

Thanks a lot.


Re: Dynamic proxy

Posted by Thomas Mahler <th...@web.de>.
Hi again Emmanuel,

There ar tons of testcases prooving that dynamic proxies are working!
I'm sure it's only a little misconfiguration.
But you have to give more details to get real help.

cheers,
Thomas

Emmanuel Dupont wrote:
> IS there someone who use the Dynamic proxy and who can tell that it is
> working well ?
> 
>  
> 
> I had some many trouble and some many very weird behaviours that I decide to
> not use it.
> 
> It is a pity because it is very useful !
> 
>  
> 
>  
> 
>