c'est quoi ton probleme exactement? marc |-----Original Message----- |From: [EMAIL PROTECTED] |[mailto:[EMAIL PROTECTED]]On Behalf Of |Vincent Harcq |Sent: Saturday, May 12, 2001 1:16 PM |To: Dev JBoss |Subject: [JBoss-dev] TR: [JBoss-user] Obscure issue (bug?) with CMP |using column mapping | | |Hi, |I give up. |I now understand (a bit) the interceptors, the cache, the proxy, ... (btw |wooooooow,quel pied!) but still can not fix this problem... |All what I can say is that it occurs only with Optimized true, |with 2 entity |beans being in 2 different ejb jars, when the first jar remove the |entity of |the second jar. |Because when calling remove() directly, the loadEntity is make and |cause the |problem because the entity enterprise context has been loaded by another |classloader, but why ? don't know. They are switched correctly |depending of |the container in JRMPContainerInvoker so why ? |if I call a remote method before the remove(), this will loadEntity |correctly, then remove does not need to do it (isValid TRUE in |EntitySynchronizationInterceptor and so no problemo. |Why this difference in loadEntity ? because remobe() comes from EJBObject |and not from the remote interface of the bean ? dont know... | |Bullshit de putain de merde, there are other more interesting things to do |that fighting a bug that you'll never have... | |Disappointed and learning Vincent. | | |> 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 | | |_________________________________________________________ |Do You Yahoo!? |Get your free @yahoo.com address at http://mail.yahoo.com | | |_______________________________________________ |Jboss-development mailing list |[EMAIL PROTECTED] |http://lists.sourceforge.net/lists/listinfo/jboss-development _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] http://lists.sourceforge.net/lists/listinfo/jboss-development
