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