CMP 2.0 in JBoss 3.0
jrank Feb 1, 2002 12:36 PMI'm trying to deploy an entity bean with CMP 2.0 in JBoss 3.0.0alpha (which I downloaded this week). The following warnings show up when I deploy:
[10:54:34,563,ContainerFactory]
Bean : OrderEJB
Section: 9.2.2
Warning: The entity bean class must not be defined as abstract.
[10:54:34,565,ContainerFactory]
Bean : OrderEJB
Section: 9.2.2
Warning: The entity bean class must define a public constructor that takes no arguments.
[10:54:34,568,ContainerFactory]
Bean : OrderEJB
Section: 9.4.7.1
Warning: The primkey-field element must name a public field in the bean implementation class.
(I saw the other post on this, but I am using JBoss 3.0.) The bean deploys, but when I try to access it with a session bean, I get an InstantiationException:
[11:05:31,866,LogInterceptor] TransactionRolledbackException, causedBy:
java.rmi.ServerException: Could not instantiate bean; nested exception is:
 java.lang.InstantiationException: net.trapdoor.webom.order.OrderBean
java.lang.InstantiationException: net.trapdoor.webom.order.OrderBean
 at java.lang.Class.newInstance0(Native Method)
 at java.lang.Class.newInstance(Class.java:237)
 at org.jboss.ejb.plugins.CMPPersistenceManager.createBeanClassInstance(CMPPersistenceManager.java:155)
 at org.jboss.ejb.EntityContainer.createBeanClassInstance(EntityContainer.java:276)
 at org.jboss.ejb.plugins.AbstractInstancePool.get(AbstractInstancePool.java:153)
 at org.jboss.ejb.plugins.EntityInstanceInterceptor.invokeHome(EntityInstanceInterceptor.java:142)
 at org.jboss.ejb.plugins.EntityLockInterceptor.invokeHome(EntityLockInterceptor.java:104)
 at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:100)
 at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:156)
 at org.jboss.ejb.plugins.TxInterceptorCMT.invokeHome(TxInterceptorCMT.java:56)
 at org.jboss.ejb.plugins.SecurityInterceptor.invokeHome(SecurityInterceptor.java:106)
 at org.jboss.ejb.plugins.LogInterceptor.invokeHome(LogInterceptor.java:109)
 at org.jboss.ejb.EntityContainer.invokeHome(EntityContainer.java:441)
 at org.jboss.ejb.plugins.local.BaseLocalContainerInvoker.invokeHome(BaseLocalContainerInvoker.java:255)
 at org.jboss.ejb.plugins.local.BaseLocalContainerInvoker$HomeProxy.invoke(BaseLocalContainerInvoker.java:406)
 at $Proxy27.create(Unknown Source)
 at net.trapdoor.webom.WorkflowManagerBean.createOrder(Unknown Source)
 at java.lang.reflect.Method.invoke(Native Method)
 at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:569)
 at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:67)
 at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:98)
 at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:156)
 at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:65)
 at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:131)
 at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:166)
 at org.jboss.ejb.StatelessSessionContainer.invoke(StatelessSessionContainer.java:280)
 at org.jboss.ejb.Container.invoke(Container.java:528)
 at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1555)
 at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1523)
 at org.jboss.ejb.plugins.jrmp.server.JRMPContainerInvoker.invoke(JRMPContainerInvoker.java:411)
 at java.lang.reflect.Method.invoke(Native Method)
 at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:241)
 at sun.rmi.transport.Transport$1.run(Transport.java:152)
 at java.security.AccessController.doPrivileged(Native Method)
 at sun.rmi.transport.Transport.serviceCall(Transport.java:148)
 at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:465)
 at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:706)
 at java.lang.Thread.run(Thread.java:484)
The classes couldn't be much simpler:
<CODE>
------------- Home ------------------
package mypkg.order;
import javax.ejb.*;
public interface LocalOrderHome extends EJBLocalHome {
 public LocalOrder create(Integer oid) throws CreateException;
 public LocalOrder findByPrimaryKey(Integer key) throws FinderException;
}
------------- Local ----------------package mypkg.order;
import javax.ejb.*;
public interface LocalOrder extends EJBLocalObject {
 public Integer getOrderId();
}
-------------- Bean ----------------
package mypkg.order;
import javax.ejb.*;
public abstract class OrderBean implements EntityBean {
 private EntityContext context;
 public abstract Integer getOrderId();
 public abstract void setOrderId(Integer oid);
 public Integer ejbCreate(Integer oid) throws CreateException {
 setOrderId(oid);
 return null;
 }
 publid void ejbPostCreate(Integer oid) throws CreateException { }
 public void setEntityContext(EntityContext ec) {
 context = ec;
 }
 public void unsetEntityContext() {
 context = null;
 }
 public void ejbActivate() { }
 public void ejbPassivate() { }
 public void ejbLoad() { }
 public void ejbRemove() { }
 public void ejbStore() { }
}
</CODE>
The deployment descriptor is as EJB 2.0 as I know how to make it:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise Java Beans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
<ejb-jar>
 <display-name>OrderJAR</display-name>
 <enterprise-beans>
 <entity>
 <display-name>OrderEJB</display-name>
 <ejb-name>OrderEJB</ejb-name>
 <local-home>mypkg.order.LocalOrderHome</local-home>
 <local>mypkg.order.LocalOrder</local>
 <ejb-class>mypkg.order.OrderBean</ejb-class>
 <persistence-type>Container</persistence-type>
 <prim-key-class>java.lang.Integer</prim-key-class>
 <reentrant>True</reentrant>
 <cmp-version>2.x</cmp-version>
 <abstract-schema-name>orderSchema</abstract-schema-name>
 <cmp-field>
 <field-name>orderId</field-name>
 </cmp-field>
 <primkey-field>orderId</primkey-field>
 <security-identity>
 <description></description>
 <use-caller-identity></use-caller-identity>
 </security-identity>
 </entity>
 </enterprise-beans>
 <assembly-descriptor>
 <method-permission>
 <unchecked />
 <method>
 <ejb-name>OrderEJB</ejb-name>
 <method-name>*</method-name>
 </method>
 </method-permission>
 <container-transaction>
 <method>
 <ejb-name>OrderEJB</ejb-name>
 <method-name>*</method-name>
 </method>
 <trans-attribute>Required</trans-attribute>
 </container-transaction>
 </assembly-descriptor>
</ejb-jar>
Any help will score you some major karma, to be sure.
-Joe
 
     
     
     
    