Hi Tino this looks like a multi-threading problem. java.util.ConcurrentModification exception is thrown by the Java runtime when a List is being modified while an iterator is iterating over it. The list in this case is one of the collections in your Person object. Is it possible that a second thread is working on the same Person? Also the bottom of your stack trace
>EDU.oswego.cs.dl.util.concurrent.FutureResult$1.run(null: no source >available) >java.lang.Thread.run(Thread.java: 534) points into this direction. Gerhard On Fri, 19 Nov 2004 11:51:02 +0100, Tino Sch�llhorn <[EMAIL PROTECTED]> wrote: >Hi, > >I have a weird problem. We are using OJB 1.0 and are greatly satisfied. >Now we stumbled across a strange problem. When deleting a Person-Object >with: > >Person p = ...; >pb.beginTransaction(); >pb.delete(p); >pb.commitTransaction(); > >we get (sometimes) the following Exception: > >java.util.ConcurrentModificationException >java.util.AbstractList$Itr.checkForComodification(AbstractList.java: >448) >java.util.AbstractList$Itr.next(AbstractList.java: 419) >org.apache.ojb.broker.core.PersistenceBrokerImpl.deleteCollections(null: >no source available) >org.apache.ojb.broker.core.PersistenceBrokerImpl.doDelete(null: no >source available) >org.apache.ojb.broker.core.PersistenceBrokerImpl.delete(null: no >source available) >org.apache.ojb.broker.core.DelegatingPersistenceBroker.delete(null: no >source available) >org.apache.ojb.broker.core.DelegatingPersistenceBroker.delete(null: no >source available) >kos.generator.DataObject.delete(DataObject.java: 106) >kos.wnetz.modules.editor.DAOEditorModule.deleteIt(DAOEditorModule.java: 403) > >sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java: >no source available) >sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: >39) >sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: > >25) >java.lang.reflect.Method.invoke(Method.java: 324) >kos.wnetz.system.Action.invoke(Action.java: 164) >kos.wnetz.system.Action$1.call(Action.java: 213) >EDU.oswego.cs.dl.util.concurrent.FutureResult$1.run(null: no source >available) >java.lang.Thread.run(Thread.java: 534) > >-------------- END Stacktrace > >The thing is: I am absolutely sure that we do not modify the object when >deleting it. Do you have any idea what I can do about it? Should I >switch to OJB 1.0.1? > >I am glad for any help. > >Tino > >P.S.: The configuration for the Person-Object is the following (it is >quite long, sorry about that ;-)): > ><class-descriptor class="kos.intranet2.om.Person" table="Person"> > <field-descriptor name="id" column="PE_ID" jdbc-type="INTEGER" > primarykey="true" > autoincrement="true" access="readonly"/> > > <field-descriptor name="userId" column="PE_User" jdbc-type="INTEGER"/> > <field-descriptor name="title" column="PE_Title" jdbc-type="VARCHAR"/> > <field-descriptor name="firstname" column="PE_Firstname" >jdbc-type="VARCHAR"/> > <field-descriptor name="lastname" column="PE_Lastname" >jdbc-type="VARCHAR"/> > <field-descriptor name="fullName" column="PE_FullName" >jdbc-type="VARCHAR"/> > <field-descriptor name="initials" column="PE_Initials" >jdbc-type="VARCHAR"/> > <field-descriptor name="description" column="PE_Description" >jdbc-type="LONGVARCHAR"/> > <field-descriptor name="gender" column="PE_Gender" jdbc-type="BIT"/> > <field-descriptor name="birthday" column="PE_Birthday" > jdbc-type="DATE"/> > <field-descriptor name="country" column="PE_Country" > jdbc-type="VARCHAR"/> > <field-descriptor name="pictureId" column="PE_Picture" >jdbc-type="INTEGER"/> > <field-descriptor name="typeId" column="PE_Type" jdbc-type="INTEGER" >access="anonymous"/> > <field-descriptor name="privateData" column="PE_Private" > jdbc-type="BIT"/> > <field-descriptor name="owner" column="PE_Owner" jdbc-type="INTEGER"/> > > <field-descriptor name="creationDate" column="PE_CreationDate" >jdbc-type="TIMESTAMP"/> > <field-descriptor name="archiveDate" column="PE_ArchiveDate" >jdbc-type="TIMESTAMP"/> > > <!-- 1: N - Relation: 1er Seite Type --> > <reference-descriptor > name="type" > class-ref="kos.intranet2.om.PersonType" > auto-retrieve="true" > auto-update="link" > auto-delete="none"> > <foreignkey field-ref="typeId"/> > <attribute attribute-name="reverseCollection" >attribute-value="persons"/> > </reference-descriptor> > > <!-- M:N - Relation Person-Addresses --> > <collection-descriptor > name="addresses" > >collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList" > element-class-ref="kos.intranet2.om.Address" > auto-retrieve="true" > auto-update="link" > auto-delete="link" > proxy="true" > indirection-table="Person_Address"> > > <fk-pointing-to-this-class column="PEAD_Person"/> > <fk-pointing-to-element-class column="PEAD_Address"/> > > <attribute attribute-name="reverseCollection" > attribute-value="persons"/> > </collection-descriptor> > > <!-- Company-Persons--> > <collection-descriptor > name="companyPersons" > >collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList" > element-class-ref="kos.intranet2.om.CompanyPerson" > auto-retrieve="true" > auto-update="object" > auto-delete="object" > proxy="true"> > > <inverse-foreignkey field-ref="personId"/> > <attribute attribute-name="reverseReference" > attribute-value="person"/> > </collection-descriptor> > > > <!-- TeamPerson --> > <collection-descriptor > name="teamPersons" > >collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList" > element-class-ref="kos.intranet2.om.TeamPerson" > auto-retrieve="true" > auto-update="object" > auto-delete="object" > proxy="true"> > > <inverse-foreignkey field-ref="personId"/> > <attribute attribute-name="reverseReference" > attribute-value="person"/> > </collection-descriptor> > > > <!-- ProjectPerson --> > <collection-descriptor > name="projectPersons" > >collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList" > element-class-ref="kos.intranet2.om.ProjectPerson" > auto-retrieve="true" > auto-update="object" > auto-delete="object" > proxy="true"> > > <inverse-foreignkey field-ref="personId"/> > <attribute attribute-name="reverseReference" > attribute-value="person"/> > </collection-descriptor> > > <!-- M:N Relation Person-Appointment --> > <collection-descriptor > name="appointments" > >collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList" > element-class-ref="kos.intranet2.om.Appointment" > auto-retrieve="true" > auto-update="link" > auto-delete="link" > proxy="true" > indirection-table="Person_Appointment"> > > <fk-pointing-to-this-class column="PEAP_Person"/> > <fk-pointing-to-element-class column="PEAP_Appointment"/> > > <attribute attribute-name="reverseCollection" > attribute-value="persons"/> > </collection-descriptor> > > <!-- M:N Relation Person-Task --> > <collection-descriptor > name="tasks" > >collection-class="org.apache.ojb.broker.util.collections.ManageableArrayList" > element-class-ref="kos.intranet2.om.Task" > auto-retrieve="true" > auto-update="link" > auto-delete="link" > proxy="true" > indirection-table="Person_Task"> > > <fk-pointing-to-this-class column="PETA_Person"/> > <fk-pointing-to-element-class column="PETA_Task"/> > > <attribute attribute-name="reverseCollection" > attribute-value="persons"/> > </collection-descriptor> ></class-descriptor> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
