Re: EJB2.0 Generated class uncompilable
- Original Message - From: "Jeff Schnitzer" [EMAIL PROTECTED] To: "Orion-Interest" [EMAIL PROTECTED] Sent: Monday, December 11, 2000 4:57 PM Subject: RE: EJB2.0 Generated class uncompilable FYI, as a workaround, you can make bidirectional relationships work by manually setting both sides of the relationship. Orion currently seems to treat a bidirectional relationship as two unidirectional relationships, so everything works as long as you update both sides. Assuming hypothetical entities foo and bar, with a 1-M relationship foo-bar, the method Foo.addBar can look like this: void addBar(Bar bar) // on Foo { this.getBars().add(bar); // TODO: Remove this code when bidir relationships work try { bar.setFoo((Foo)ejbContext.getEJBObject()); } catch (java.rmi.RemoteException ex) { throw new EJBException(ex); } } Of course you get data duplication in the database, but it works :-) Jeff Schnitzer [EMAIL PROTECTED] This makes sense. Lately, I've been thinking using an orion-ejb-jar.xml in the EAR to map both set-mappings to the same table, setting exclusive-write-access to false. You idea makes for a simpler change when Orion does get bidir relationships working. P. Pontbriand Canlink Interactive Technologies Inc.
Re: EJB2.0 Generated class uncompilable
- Original Message - From: "Tim Drury" [EMAIL PROTECTED] To: "Orion-Interest" [EMAIL PROTECTED] Sent: Friday, December 08, 2000 5:39 PM Subject: RE: EJB2.0 Generated class uncompilable Since your bean is called "Foo" I'm going to guess that it is a trivial "Hello World" bean. Why don't you post the bean code and the ejb-jar.xml (don't attach/zip/etc - just dump it)? -tim Well, it is rather trivial at the moment. That makes the deployments errors all the more frustrating, of course. BTW, blowing away the entire deployment does _not_ eliminate the deploytment problems - that was one of the first things we tried. Here's the current state of the source: Foo.java is: - /* Generated by Together */ package com.foo.components.foo.bean; import javax.ejb.EntityBean; import javax.ejb.EntityContext; import java.rmi.RemoteException; import javax.ejb.EJBException; import javax.ejb.CreateException; import java.sql.SQLException; import javax.ejb.FinderException; import java.util.Set; import com.canlink.components.base.GUID; import com.foo.components.foo.*; public abstract class FooBean implements EntityBean, FooBusiness { private EntityContext ejbContext; private transient boolean isModified = false; public void setEntityContext(EntityContext context) throws RemoteException, EJBException { ejbContext = context; } public void unsetEntityContext() throws RemoteException, EJBException { ejbContext = null; } public void ejbActivate() throws RemoteException, EJBException { } public void ejbPassivate() throws RemoteException, EJBException { } public void ejbRemove() throws RemoteException, EJBException { } public void ejbStore() throws RemoteException, EJBException { isModified = false; } public void ejbLoad() throws RemoteException, EJBException { } public EntityPK ejbCreate(Set bars) throws CreateException, EJBException, RemoteException, SQLException { setIdentity(GUID.getNewGUID()); setBars(bars); isModified = true; return null; } public void ejbPostCreate(Set bars) throws CreateException, EJBException, RemoteException, SQLException {} public boolean isModified() { return isModified; } abstract public Set getBars(); abstract protected void setBars(Set bars); public FooValueObject get() throws RemoteException { return new FooValueObject( (EntityPK)ejbContext.getPrimaryKey(), getBars()); } public FooValueObject set(FooValueObject mutator) throws RemoteException { setBars(mutator.getBars()); isModified = true; return get(); } abstract public long getIdentity(); abstract protected void setIdentity(long identity); } - Bar.java is: - /* Generated by Together */ package com.foo.components.foo.bean; import javax.ejb.EntityBean; import javax.ejb.EntityContext; import java.rmi.RemoteException; import javax.ejb.EJBException; import javax.ejb.CreateException; import java.sql.SQLException; import javax.ejb.FinderException; import java.util.Set; import com.canlink.components.base.GUID; import com.foo.components.foo.*; public abstract class BarBean implements BarBusiness, EntityBean { private EntityContext ejbContext; private boolean isModified = false; public void setEntityContext(EntityContext context) throws RemoteException, EJBException { ejbContext = context; } public void unsetEntityContext() throws RemoteException, EJBException { ejbContext = null; } public void ejbActivate() throws RemoteException, EJBException { } public void ejbPassivate() throws RemoteException, EJBException { } public void ejbRemove() throws RemoteException, EJBException { } public void ejbStore() throws RemoteException, EJBException { isModified = false; } public void ejbLoad() throws RemoteException, EJBException { } public EntityPK ejbCreate(Set foos) throws CreateException, EJBException, RemoteException, SQLException { setIdentity(GUID.getNewGUID()); isModified = true; return null; } public void ejbPostCreate(Set foos) throws CreateException, EJBException, RemoteException, SQLException {} public boolean isModified() { return isModified; } abstract public Set getFoos(); abstract protected void setFoos(Set foos); public BarValueObject get() throws RemoteException { return new BarValueObject( (EntityPK)ejbContext.getPrimaryKey(), getFoos()); } public B
RE: EJB2.0 Generated class uncompilable
geez! setBar is abstract no abstract methods needed... The container uses indeirection to implement DB code... so, your get/set pair should look like: // public java.util.Set bars; // public Set getBars() { return bars; } public void setBars(Set bars) { this.bars = bars; } and so on for Identity, and all other fields HTH JP -Original Message- From: Peter Pontbriand [mailto:[EMAIL PROTECTED]] Sent: Lunes, 11 de Diciembre de 2000 13:38 To: Orion-Interest Subject: Re: EJB2.0 Generated class uncompilable - Original Message - From: "Tim Drury" [EMAIL PROTECTED] To: "Orion-Interest" [EMAIL PROTECTED] Sent: Friday, December 08, 2000 5:39 PM Subject: RE: EJB2.0 Generated class uncompilable Since your bean is called "Foo" I'm going to guess that it is a trivial "Hello World" bean. Why don't you post the bean code and the ejb-jar.xml (don't attach/zip/etc - just dump it)? -tim Well, it is rather trivial at the moment. That makes the deployments errors all the more frustrating, of course. BTW, blowing away the entire deployment does _not_ eliminate the deploytment problems - that was one of the first things we tried. Here's the current state of the source: Foo.java is: - /* Generated by Together */ package com.foo.components.foo.bean; import javax.ejb.EntityBean; import javax.ejb.EntityContext; import java.rmi.RemoteException; import javax.ejb.EJBException; import javax.ejb.CreateException; import java.sql.SQLException; import javax.ejb.FinderException; import java.util.Set; import com.canlink.components.base.GUID; import com.foo.components.foo.*; public abstract class FooBean implements EntityBean, FooBusiness { private EntityContext ejbContext; private transient boolean isModified = false; public void setEntityContext(EntityContext context) throws RemoteException, EJBException { ejbContext = context; } public void unsetEntityContext() throws RemoteException, EJBException { ejbContext = null; } public void ejbActivate() throws RemoteException, EJBException { } public void ejbPassivate() throws RemoteException, EJBException { } public void ejbRemove() throws RemoteException, EJBException { } public void ejbStore() throws RemoteException, EJBException { isModified = false; } public void ejbLoad() throws RemoteException, EJBException { } public EntityPK ejbCreate(Set bars) throws CreateException, EJBException, RemoteException, SQLException { setIdentity(GUID.getNewGUID()); setBars(bars); isModified = true; return null; } public void ejbPostCreate(Set bars) throws CreateException, EJBException, RemoteException, SQLException {} public boolean isModified() { return isModified; } abstract public Set getBars(); abstract protected void setBars(Set bars); public FooValueObject get() throws RemoteException { return new FooValueObject( (EntityPK)ejbContext.getPrimaryKey(), getBars()); } public FooValueObject set(FooValueObject mutator) throws RemoteException { setBars(mutator.getBars()); isModified = true; return get(); } abstract public long getIdentity(); abstract protected void setIdentity(long identity); } - Bar.java is: - /* Generated by Together */ package com.foo.components.foo.bean; import javax.ejb.EntityBean; import javax.ejb.EntityContext; import java.rmi.RemoteException; import javax.ejb.EJBException; import javax.ejb.CreateException; import java.sql.SQLException; import javax.ejb.FinderException; import java.util.Set; import com.canlink.components.base.GUID; import com.foo.components.foo.*; public abstract class BarBean implements BarBusiness, EntityBean { private EntityContext ejbContext; private boolean isModified = false; public void setEntityContext(EntityContext context) throws RemoteException, EJBException { ejbContext = context; } public void unsetEntityContext() throws RemoteException, EJBException { ejbContext = null; } public void ejbActivate() throws RemoteException, EJBException { } public void ejbPassivate() throws RemoteException, EJBException { } public void ejbRemove() throws RemoteException, EJBException { } public void ejbStore() throws RemoteException, EJBException { isModified = false; } public void ejbLoad() throws RemoteException, EJBException { } public EntityPK ejbCreate(Set foos) throws CreateException, EJBException, RemoteException, SQLException { setIdentity(GUID.
Re: EJB2.0 Generated class uncompilable
EJB2.0 DTD _is_ specified in ejb-jar.xml ... ejb-jar.xml is: - ?xml version="1.0"? !DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_2_0.dtd" P.Pontbriand Canlink Interactive Technologies Inc.
RE: EJB2.0 Generated class uncompilable
In EJB 2.0 gets/sets are declared abstract. The container implements them for you. -tim -Original Message- From: Juan Lorandi (Chile) [mailto:[EMAIL PROTECTED]] Sent: Monday, December 11, 2000 1:42 PM To: Orion-Interest Subject: RE: EJB2.0 Generated class uncompilable geez! setBar is abstract no abstract methods needed... The container uses indeirection to implement DB code... so, your get/set pair should look like: // public java.util.Set bars; // public Set getBars() { return bars; } public void setBars(Set bars) { this.bars = bars; } and so on for Identity, and all other fields HTH JP -Original Message- From: Peter Pontbriand [mailto:[EMAIL PROTECTED]] Sent: Lunes, 11 de Diciembre de 2000 13:38 To: Orion-Interest Subject: Re: EJB2.0 Generated class uncompilable - Original Message - From: "Tim Drury" [EMAIL PROTECTED] To: "Orion-Interest" [EMAIL PROTECTED] Sent: Friday, December 08, 2000 5:39 PM Subject: RE: EJB2.0 Generated class uncompilable Since your bean is called "Foo" I'm going to guess that it is a trivial "Hello World" bean. Why don't you post the bean code and the ejb-jar.xml (don't attach/zip/etc - just dump it)? -tim Well, it is rather trivial at the moment. That makes the deployments errors all the more frustrating, of course. BTW, blowing away the entire deployment does _not_ eliminate the deploytment problems - that was one of the first things we tried. Here's the current state of the source: Foo.java is: - /* Generated by Together */ package com.foo.components.foo.bean; import javax.ejb.EntityBean; import javax.ejb.EntityContext; import java.rmi.RemoteException; import javax.ejb.EJBException; import javax.ejb.CreateException; import java.sql.SQLException; import javax.ejb.FinderException; import java.util.Set; import com.canlink.components.base.GUID; import com.foo.components.foo.*; public abstract class FooBean implements EntityBean, FooBusiness { private EntityContext ejbContext; private transient boolean isModified = false; public void setEntityContext(EntityContext context) throws RemoteException, EJBException { ejbContext = context; } public void unsetEntityContext() throws RemoteException, EJBException { ejbContext = null; } public void ejbActivate() throws RemoteException, EJBException { } public void ejbPassivate() throws RemoteException, EJBException { } public void ejbRemove() throws RemoteException, EJBException { } public void ejbStore() throws RemoteException, EJBException { isModified = false; } public void ejbLoad() throws RemoteException, EJBException { } public EntityPK ejbCreate(Set bars) throws CreateException, EJBException, RemoteException, SQLException { setIdentity(GUID.getNewGUID()); setBars(bars); isModified = true; return null; } public void ejbPostCreate(Set bars) throws CreateException, EJBException, RemoteException, SQLException {} public boolean isModified() { return isModified; } abstract public Set getBars(); abstract protected void setBars(Set bars); public FooValueObject get() throws RemoteException { return new FooValueObject( (EntityPK)ejbContext.getPrimaryKey(), getBars()); } public FooValueObject set(FooValueObject mutator) throws RemoteException { setBars(mutator.getBars()); isModified = true; return get(); } abstract public long getIdentity(); abstract protected void setIdentity(long identity); } - Bar.java is: - /* Generated by Together */ package com.foo.components.foo.bean; import javax.ejb.EntityBean; import javax.ejb.EntityContext; import java.rmi.RemoteException; import javax.ejb.EJBException; import javax.ejb.CreateException; import java.sql.SQLException; import javax.ejb.FinderException; import java.util.Set; import com.canlink.components.base.GUID; import com.foo.components.foo.*; public abstract class BarBean implements BarBusiness, EntityBean { private EntityContext ejbContext; private boolean isModified = false; public void setEntityContext(EntityContext context) throws RemoteException, EJBException { ejbContext = context; } public void unsetEntityContext() throws RemoteException, EJBException { ejbContext = null; } public void ejbActivate() throws RemoteException, EJBException { } public void ejbPassivat
RE: EJB2.0 Generated class uncompilable
FYI, as a workaround, you can make bidirectional relationships work by manually setting both sides of the relationship. Orion currently seems to treat a bidirectional relationship as two unidirectional relationships, so everything works as long as you update both sides. Assuming hypothetical entities foo and bar, with a 1-M relationship foo-bar, the method Foo.addBar can look like this: void addBar(Bar bar)// on Foo { this.getBars().add(bar); // TODO: Remove this code when bidir relationships work try { bar.setFoo((Foo)ejbContext.getEJBObject()); } catch (java.rmi.RemoteException ex) { throw new EJBException(ex); } } Of course you get data duplication in the database, but it works :-) Jeff Schnitzer [EMAIL PROTECTED] -Original Message- From: Tim Drury [mailto:[EMAIL PROTECTED]] Sent: Monday, December 11, 2000 10:43 AM To: Orion-Interest Subject: RE: EJB2.0 Generated class uncompilable I don't think we've ever cleared up whether this is needed or not: in ejb-jar.xml: entity cmp-version2.x/cmp-version ... Your bar ejb seems to reference your foo ejb and visa versa. Bi-directional relationships are in-the-works. See bug #153 in Bugzilla. -tim -Original Message- From: Peter Pontbriand [mailto:[EMAIL PROTECTED]] Sent: Monday, December 11, 2000 11:38 AM To: Orion-Interest Subject: Re: EJB2.0 Generated class uncompilable - Original Message - From: "Tim Drury" [EMAIL PROTECTED] To: "Orion-Interest" [EMAIL PROTECTED] Sent: Friday, December 08, 2000 5:39 PM Subject: RE: EJB2.0 Generated class uncompilable Since your bean is called "Foo" I'm going to guess that it is a trivial "Hello World" bean. Why don't you post the bean code and the ejb-jar.xml (don't attach/zip/etc - just dump it)? -tim Well, it is rather trivial at the moment. That makes the deployments errors all the more frustrating, of course. BTW, blowing away the entire deployment does _not_ eliminate the deploytment problems - that was one of the first things we tried. Here's the current state of the source: Foo.java is: - /* Generated by Together */ package com.foo.components.foo.bean; import javax.ejb.EntityBean; import javax.ejb.EntityContext; import java.rmi.RemoteException; import javax.ejb.EJBException; import javax.ejb.CreateException; import java.sql.SQLException; import javax.ejb.FinderException; import java.util.Set; import com.canlink.components.base.GUID; import com.foo.components.foo.*; public abstract class FooBean implements EntityBean, FooBusiness { private EntityContext ejbContext; private transient boolean isModified = false; public void setEntityContext(EntityContext context) throws RemoteException, EJBException { ejbContext = context; } public void unsetEntityContext() throws RemoteException, EJBException { ejbContext = null; } public void ejbActivate() throws RemoteException, EJBException { } public void ejbPassivate() throws RemoteException, EJBException { } public void ejbRemove() throws RemoteException, EJBException { } public void ejbStore() throws RemoteException, EJBException { isModified = false; } public void ejbLoad() throws RemoteException, EJBException { } public EntityPK ejbCreate(Set bars) throws CreateException, EJBException, RemoteException, SQLException { setIdentity(GUID.getNewGUID()); setBars(bars); isModified = true; return null; } public void ejbPostCreate(Set bars) throws CreateException, EJBException, RemoteException, SQLException {} public boolean isModified() { return isModified; } abstract public Set getBars(); abstract protected void setBars(Set bars); public FooValueObject get() throws RemoteException { return new FooValueObject( (EntityPK)ejbContext.getPrimaryKey(), getBars()); } public FooValueObject set(FooValueObject mutator) throws RemoteException { setBars(mutator.getBars()); isModified = true; return get(); } abstract public long getIdentity(); abstract protected void setIdentity(long identity); } - Bar.java is: - /* Generated by Together */ package com.foo.components.foo.bean; import javax.ejb.EntityBean; import javax.ejb.EntityContext; import java.rmi.RemoteException; import javax.ejb.EJBException; import javax.ejb.CreateException; import java.sql.SQLException; import javax.ejb.FinderExc
RE: EJB2.0 Generated class uncompilable
Since your bean is called "Foo" I'm going to guess that it is a trivial "Hello World" bean. Why don't you post the bean code and the ejb-jar.xml (don't attach/zip/etc - just dump it)? -tim -Original Message- From: Peter Pontbriand [mailto:[EMAIL PROTECTED]] Sent: Friday, December 08, 2000 4:03 PM To: Orion-Interest Subject: EJB2.0 Generated class uncompilable Hello All. We've just written our first pair of 2.0-spec EJBs and are experiencing some really strange problems deploying them. Orion 1.4.4 auto-generates the DB tables for these beans, but then spits out the following message for every CMP field in each EJB: ___ 6. public class FooBean_PersistenceManager22 extends com.foo.components.authorization.bean.FooBean implements ContainerManagedObject -- *** Error: The abstract method "void setBar(java.util.Set $1);", inherited from type "com/foo/components/authorization/bean/FooBean", is not implemented in the non-abstract class "FooBean_PersistenceManager22". Since the type "com/foo/components/authorization/bean/FooBean" was read from a class file, it is possible that it just needs to be recompiled because after having inherited method "void setBar(java.util.Set $1);" from an interface, the method was subsequently removed from that interface. Error compiling file:/C:/orion/applications/foo/admin-ejb.jar: Error in source ___ We're totally at a loss here. What's removing what from what interface? There's no indication in the message of what the problem is in the source. We've already spend an incredible amount of time trying to sort out extremely cryptic deployment error messages with 1.1 and now 2.0-spec CMP Entity EJBs. We're definitely beginning to wonder whether there is any point to CMP at all - it seems like we could have ported BMP Entity EJBs to quite a number of different DBs in the time its taken to try and deal with CMP problems like this. Anybody have any light to on this latest problem? P. Pontbriand Canlink Interactive Technologies Inc.
RE: EJB2.0 Generated class uncompilable
I've been using EJB2.0 beans (including container managed relationships) with considerable success for several months now. It works (mostly). Don't give up :-) I haven't seen that particular error message, but I have noticed that occasionally Orion screws up the deployment and forgets to recompile/rebuild something. I get a lot of milage out of wiping out my application deployment directory and letting Orion rebuild from scratch. Watch out if you have a lot of changes to your deployment xml files, though. You may just need to delete the deployment cache and restart the server. More than likely, though, you have something misspecified in your deployment descriptor. Make sure you read the comments in Sun's EJB2.0 DTD thoroughly. If this doesn't help, you can try posting your deployment descriptor. Good luck, Jeff Schnitzer [EMAIL PROTECTED] -Original Message- From: Peter Pontbriand [mailto:[EMAIL PROTECTED]] Sent: Friday, December 08, 2000 1:03 PM To: Orion-Interest Subject: EJB2.0 Generated class uncompilable Hello All. We've just written our first pair of 2.0-spec EJBs and are experiencing some really strange problems deploying them. Orion 1.4.4 auto-generates the DB tables for these beans, but then spits out the following message for every CMP field in each EJB: ___ 6. public class FooBean_PersistenceManager22 extends com.foo.components.authorization.bean.FooBean implements ContainerManagedObject -- *** Error: The abstract method "void setBar(java.util.Set $1);", inherited from type "com/foo/components/authorization/bean/FooBean", is not implemented in the non-abstract class "FooBean_PersistenceManager22". Since the type "com/foo/components/authorization/bean/FooBean" was read from a class file, it is possible that it just needs to be recompiled because after having inherited method "void setBar(java.util.Set $1);" from an interface, the method was subsequently removed from that interface. Error compiling file:/C:/orion/applications/foo/admin-ejb.jar: Error in source ___ We're totally at a loss here. What's removing what from what interface? There's no indication in the message of what the problem is in the source. We've already spend an incredible amount of time trying to sort out extremely cryptic deployment error messages with 1.1 and now 2.0-spec CMP Entity EJBs. We're definitely beginning to wonder whether there is any point to CMP at all - it seems like we could have ported BMP Entity EJBs to quite a number of different DBs in the time its taken to try and deal with CMP problems like this. Anybody have any light to on this latest problem? P. Pontbriand Canlink Interactive Technologies Inc.
Re: EJB2.0 Generated class uncompilable
- Original Message - From: "Peter Pontbriand" [EMAIL PROTECTED] We've just written our first pair of 2.0-spec EJBs and are experiencing some really strange problems deploying them. Orion 1.4.4 auto-generates the DB tables for these beans, but then spits out the following message for every CMP field in each EJB: I'm somewhat new to Orion (I've walked through all the examples and am using it to learn EJB 2.0), and was curious where you can get the 1.4.4 version? I assume this is beta or worse quality non-public release, which I'm more than happy to use, and any directions as to how to get advanced releases would be appreciated. Serge Knystautas Loki Technologies http://www.lokitech.com/
RE: EJB2.0 Generated class uncompilable
use autoupdate or find it in http://www.orionserver.com/orion/orion.jar use at own risk! (actually, 1.4.4 is VERY stable) -Original Message- From: Serge Knystautas [mailto:[EMAIL PROTECTED]] Sent: Viernes, 08 de Diciembre de 2000 20:48 To: Orion-Interest Subject: Re: EJB2.0 Generated class uncompilable - Original Message - From: "Peter Pontbriand" [EMAIL PROTECTED] We've just written our first pair of 2.0-spec EJBs and are experiencing some really strange problems deploying them. Orion 1.4.4 auto-generates the DB tables for these beans, but then spits out the following message for every CMP field in each EJB: I'm somewhat new to Orion (I've walked through all the examples and am using it to learn EJB 2.0), and was curious where you can get the 1.4.4 version? I assume this is beta or worse quality non-public release, which I'm more than happy to use, and any directions as to how to get advanced releases would be appreciated. Serge Knystautas Loki Technologies http://www.lokitech.com/
RE: EJB2.0 Generated class uncompilable
Take the version you have and do: cd $ORION_HOME java -jar autoupdate.jar This will pull down the latest released build from Orion. Pretty sweet feature. Scott Stirling West Newton, MA -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of Serge Knystautas I'm somewhat new to Orion (I've walked through all the examples and am using it to learn EJB 2.0), and was curious where you can get the 1.4.4 version? I assume this is beta or worse quality non-public release, which I'm more than happy to use, and any directions as to how to get advanced releases would be appreciated. Serge Knystautas Loki Technologies http://www.lokitech.com/
Re: EJB2.0 Generated class uncompilable
You might want to go to: http://www.orionsupport.com And grab the simple EJB 2.0 sample... Jim --On Friday, December 08, 2000 4:02 PM -0500 Peter Pontbriand [EMAIL PROTECTED] wrote: Hello All. We've just written our first pair of 2.0-spec EJBs and are experiencing some really strange problems deploying them. Orion 1.4.4 auto-generates the DB tables for these beans, but then spits out the following message for every CMP field in each EJB: ___ 6. public class FooBean_PersistenceManager22 extends com.foo.components.authorization.bean.FooBean implements ContainerManagedObject -- *** Error: The abstract method "void setBar(java.util.Set $1);", inherited from type "com/foo/components/authorization/bean/FooBean", is not implemented in the non-abstract class "FooBean_PersistenceManager22". Since the type "com/foo/components/authorization/bean/FooBean" was read from a class file, it is possible that it just needs to be recompiled because after having inherited method "void setBar(java.util.Set $1);" from an interface, the method was subsequently removed from that interface. Error compiling file:/C:/orion/applications/foo/admin-ejb.jar: Error in source ___ We're totally at a loss here. What's removing what from what interface? There's no indication in the message of what the problem is in the source. We've already spend an incredible amount of time trying to sort out extremely cryptic deployment error messages with 1.1 and now 2.0-spec CMP Entity EJBs. We're definitely beginning to wonder whether there is any point to CMP at all - it seems like we could have ported BMP Entity EJBs to quite a number of different DBs in the time its taken to try and deal with CMP problems like this. Anybody have any light to on this latest problem? P. Pontbriand Canlink Interactive Technologies Inc.