Hi,
I respond to dev for this one.
I do not think it is related to what you mention.
I use commit option C and the workaround still continue to work.

If I set "Optimized" to false, then I also do not see the problem.

I has already pass a lot of time to find what happens, and it looks like it
is due to classloader of EntityContext id object being not correct in the
case an entity bean A fBPK an entity B, both of them being in different
ejb-jar, then a session bean from ejb-jar A calls of fBPK on entity B and
remove() just after.  if I call a remote method, the invoke() stuff reset
the classloader of id of entity context of the pool correctly.
Looks like the classloader of EntityContainer of A /or/ classloader of
ejb-jar A have put some mess in between.
Again, only with Optimized TRUE.

I'll continue to search - it makes me understand the architecture so I like
it ;)

> -----Message d'origine-----
> De : [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED]]De la part de Dan OConnor
> Envoy� : mercredi 9 mai 2001 0:13
> � : [EMAIL PROTECTED]
> Objet : RE: [JBoss-user] Obscure issue (bug?) with CMP using column
> mapping
>
>
> The spec requires that the state of the bean is loaded before
> ejbRemove is called. The JBoss container is not doing this, in
> violation of the spec.
>
> Because commit option A is the default, the state of the bean will
> often already be loaded when ejbRemove is called, and the effects
> of this bug will not be visible.
>
> If the state is not already loaded, calling a "get" method will load
> the state, which will make it available in ejbRemove, assuming "A".
> (If you want to break your workaround, switch to commit "C".)
>
> Any volunteers to fix this?
>
> -Dan
>
> On 8 May 01, at 17:39, David Esposito wrote:
>
> > Vincent,
> >
> > You are my hero .. :) ... it works now ... it's always nice when the
> > workarounds are painless to integrate ... ;)
> >
> > Here's the snippet of code:
> >
> > joinRecords = repHome.findByRetailerID(params.memberCompanyID);}
> >
> > //Clear the table out for this company
> > while(joinRecords != null && joinRecords.hasMoreElements())
> > {
> >   RepresentativeJoin joinRec =
> > (RepresentativeJoin)joinRecords.nextElement();
> >
> >   log("Representative_ID = " + joinRec.getRepresentative());
> >
> >   log("Deleting rec...");
> >   joinRec.remove();
> >   log("Delete succeeded...");
> > }
> >
> > if the first log() line is missing, the thing bombs out on
> remove() like I
> > described below ... with one call to the remote interface, the remove()
> > works smoothly ...
> >
> > Is this issue documented sufficiently for you to add it to the list of,
> > ahem, "known issues" or do you need me to explore it further?
> >
> > Thank you very much ...
> >
> > -Dave
> >
> > > -----Original Message-----
> > > From: [EMAIL PROTECTED]
> > > [mailto:[EMAIL PROTECTED]]On Behalf Of Vincent
> > > Harcq
> > > Sent: Tuesday, May 08, 2001 4:38 PM
> > > To: [EMAIL PROTECTED]
> > > Subject: RE: [JBoss-user] Obscure issue (bug?) with CMP using column
> > > mapping
> > >
> > >
> > > Hi,
> > > if you run remote= fBPK() then remote.remove(), can you try a
> > > remote.getanyfield() in between and let me know if it solve
> the problem or
> > > not.  I also saw something similar to that.
> > > Thanks.
> > > Vincent.
> > >
> > > > -----Message d'origine-----
> > > > De : [EMAIL PROTECTED]
> > > > [mailto:[EMAIL PROTECTED]]De la part de David
> > > > Esposito
> > > > Envoy� : mardi 8 mai 2001 17:33
> > > > � : [EMAIL PROTECTED]
> > > > Objet : [JBoss-user] Obscure issue (bug?) with CMP using
> column mapping
> > > >
> > > >
> > > > Hello all,
> > > >
> > > > I have a weird situation:
> > > > JBOSS 2.2.1
> > > > Sun JDK 1.3
> > > > PostGreSQL 7.1 (although I have the same problem with Oracle 8.1.7)
> > > >
> > > > I have a CMP bean that is used to manipulate join tables
> ... (you know,
> > > > tables with only 2 columns used for a many-many
> relationship) ... rather
> > > > than create a half dozen beans, I have created only one and use the
> > > > deployment descriptor to map it to the appropriate table. All
> > > of my tables
> > > > contain 2 integer fields which, when concatenated, form the
> PK for the
> > > > table. So my deployment descriptors look like the following:
> > > >
> > > > From ejb-jar.xml:
> > > >
> > > > <entity>
> > > >   <ejb-name>Supplier_Representative</ejb-name>
> > > >
> <home>mypackage.ejb.representativejoin.RepresentativeJoinHome</home>
> > > >
> <remote>mypackage.ejb.representativejoin.RepresentativeJoin</remote>
> > > >
> > > > <ejb-class>mypackage.ejb.representativejoin.RepresentativeJoinBean
> > > > </ejb-clas
> > > > s>
> > > >   <persistence-type>Container</persistence-type>
> > > >
> > > > <prim-key-class>mypackage.ejb.representativejoin.RepresentativeJoi
> > > > nPK</prim-
> > > > key-class>
> > > >   <reentrant>False</reentrant>
> > > >
> > > >   <cmp-field><field-name>representative_id</field-name></cmp-field>
> > > >   <cmp-field><field-name>reference_id</field-name></cmp-field>
> > > >
> > > >   <resource-ref>
> > > >     <description>Data source</description>
> > > >     <res-ref-name>jdbc/MyDB</res-ref-name>
> > > >     <res-type>javax.sql.DataSource</res-type>
> > > >     <res-auth>Container</res-auth>
> > > >   </resource-ref>
> > > > </entity>
> > > >
> > > > From jaws.xml:
> > > >
> > > > <entity>
> > > >   <ejb-name>Supplier_Representative</ejb-name>
> > > >   <cmp-field>
> > > >     <field-name>representative_id</field-name>
> > > >     <column-name>representative_id</column-name>
> > > >   </cmp-field>
> > > >   <cmp-field>
> > > >     <field-name>reference_id</field-name>
> > > >     <column-name>supplier_id</column-name>
> > > >   </cmp-field>
> > > >   <finder>
> > > >     <name>findBySupplierID</name>
> > > >     <query>supplier_id = {0}</query>
> > > >     <order></order>
> > > >   </finder>
> > > > </entity>
> > > >
> > > > So you see that i use the <cmp-field> to map between the
> bean instance
> > > > variables and the DB columns (in this case, the reference_id
> > > variable maps
> > > > to the supplier_id field in the DB) ... my bean PK class looks like:
> > > >
> > > > public class RepresentativeJoinPK implements Serializable
> > > > {
> > > >     public int representative_id;
> > > >     public int reference_id;
> > > >
> > > >     public RepresentativeJoinPK() {
> > > >         this(0,0);
> > > >     }
> > > >
> > > >     public RepresentativeJoinPK(int representative_id, int
> > > reference_id) {
> > > >         this.representative_id = representative_id;
> > > >         this.reference_id = reference_id;
> > > >     }
> > > >
> > > >         public int hashCode(){
> > > >                 return 0;
> > > >         }
> > > >
> > > >         public boolean equals(Object o) {
> > > >         if(o != null && o.getClass().equals(getClass()))
> > > >             return ((((RepresentativeJoinPK)o).representative_id ==
> > > > this.representative_id) &&
> (((RepresentativeJoinPK)o).reference_id ==
> > > > this.reference_id));
> > > >         else
> > > >             return false;
> > > >     }
> > > >
> > > >         public String toString() {
> > > >         return Integer.toString(this.representative_id) + "," +
> > > > Integer.toString(this.reference_id);
> > > >     }
> > > > }
> > > >
> > > > Alright, so here's the problem ... If I create a few
> instances (a few
> > > > records), and use them actively, all is well ... For example, if
> > > > I create 4
> > > > records during one client interation ... then a second or two
> > > > later, try to
> > > > read the beans ... then a few seconds later, try to remove() the
> > > > beans, all
> > > > is well ...
> > > >
> > > > However, if I either:
> > > >
> > > > a) let the beans passivate (by letting enough time pass)
> > > > b) restart JBOSS
> > > >
> > > > I am still able to READ the beans from the DB (display the
> > > contents of the
> > > > field, read the PK using getPrimaryKey() on the remote interface)
> > > > but when i
> > > > try to do a remove() (i've tried using the home interface's
> > > remove(Handle
> > > > h), remove(PrimaryKey pk) and the remote interface's remove()
> > > methods()) i
> > > > get the following exception:
> > > >
> > > >  TRANSACTION ROLLBACK EXCEPTION:Load failed; nested exception is:
> > > >         java.lang.IllegalArgumentException: object is not
> an instance of
> > > > declaring class; nested exception is:
> > > >         java.rmi.ServerException: Load failed; nested exception is:
> > > >         java.lang.IllegalArgumentException: object is not
> an instance of
> > > > declaring class
> > > >  java.rmi.ServerException: Load failed; nested exception is:
> > > >        java.lang.IllegalArgumentException: object is not an
> instance of
> > > > declaring class
> > > >  java.lang.IllegalArgumentException: object is not an instance of
> > > > declaring
> > > > class
> > > >        at java.lang.reflect.Field.get(Native Method)
> > > >        at
> > > > org.jboss.ejb.plugins.jaws.jdbc.JDBCCommand.getPkFieldValue(JDBCCo
> > > > mmand.java
> > > > :658)
> > > >        at
> > > > org.jboss.ejb.plugins.jaws.jdbc.JDBCCommand.setPrimaryKeyParameter
> > > > s(JDBCComm
> > > > and.java:364)
> > > >        at
> > > > org.jboss.ejb.plugins.jaws.jdbc.JDBCLoadEntityCommand.setParameter
> > > > s(JDBCLoad
> > > > EntityCommand.java:97)
> > > >        at
> > > > org.jboss.ejb.plugins.jaws.jdbc.JDBCCommand.jdbcExecute(JDBCComman
> > > > d.java:159
> > > > )
> > > >        at
> > > > org.jboss.ejb.plugins.jaws.jdbc.JDBCLoadEntityCommand.execute(JDBC
> > > > LoadEntity
> > > > Command.java:82)
> > > >        at
> > > > org.jboss.ejb.plugins.jaws.JAWSPersistenceManager.loadEntity(JAWSP
> > > > ersistence
> > > > Manager.java:150)
> > > >        at
> > > > org.jboss.ejb.plugins.CMPPersistenceManager.loadEntity(CMPPersiste
> > > > nceManager
> > > > .java:341)
> > > >        at
> > > > org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(Enti
> > > > tySynchron
> > > > izationInterceptor.java:192)
> > > >        at
> > > > org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInsta
> > > > nceInterce
> > > > ptor.java:186)
> > > >        at
> > > > org.jboss.ejb.plugins.TxInterceptorCMT.invokeNext(TxInterceptorCMT
> > > > .java:133)
> > > >        at
> > > > org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInter
> > > > ceptorCMT.
> > > > java:263)
> > > >        at
> > > >
> org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:99)
> > > >        at
> > > > org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityIntercept
> > > > or.java:19
> > > > 0)
> > > >        at
> > > > org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:195)
> > > >        at
> org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:323)
> > > >        at
> > > > org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMP
> > > > ContainerI
> > > > nvoker.java:482)
> > > >        at
> > > > org.jboss.ejb.plugins.jrmp.interfaces.EntityProxy.invoke(EntityPro
> > > > xy.java:14
> > > > 6)
> > > >        at $Proxy23.remove(Unknown Source)
> > > >        at
> > > > mypackage.servlets.RepAuthorizationServlet.serviceRequest(RepAutho
> > > > rizationSe
> > > > rvlet.java:141)
> > > >
> > > > I saw somethign about this issue (regarding passivating
> beans) on some
> > > > threads back on the mailing list back in November 2000, but it
> > > sounded as
> > > > though this problem had been fixed ... The really weird part is
> > > > that as long
> > > > as the operations are read-only, I don't have a problem ... it's
> > > > only when i
> > > > try to remove() the bean that I get this exception ... my
> > > finders all work
> > > > fine ...
> > > >
> > > > So, to summarize:
> > > >         Things work perfectly all the time EXCEPT when trying to
> > > > use the remove()
> > > > method on passivated beans (or beans freshly loaded from the DB) ...
> > > >
> > > > So, if you've managed to read to the end of this message, I
> > > > applaud you ...
> > > > I think it's nearly impossible that I left anything out
> with the above
> > > > ramblings ...  :)
> > > >
> > > > Thanks in advance...
> > > >
> > > > -Dave
> > > >
> > > >
> > > > _______________________________________________
> > > > JBoss-user mailing list
> > > > [EMAIL PROTECTED]
> > > > http://lists.sourceforge.net/lists/listinfo/jboss-user
> > >
> > >
> > > _________________________________________________________
> > > Do You Yahoo!?
> > > Get your free @yahoo.com address at http://mail.yahoo.com
> > >
> > >
> > > _______________________________________________
> > > JBoss-user mailing list
> > > [EMAIL PROTECTED]
> > > http://lists.sourceforge.net/lists/listinfo/jboss-user
> >
> >
> > _______________________________________________
> > JBoss-user mailing list
> > [EMAIL PROTECTED]
> > http://lists.sourceforge.net/lists/listinfo/jboss-user
>
>
>
> _______________________________________________
> JBoss-user mailing list
> [EMAIL PROTECTED]
> http://lists.sourceforge.net/lists/listinfo/jboss-user
>


_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to