CMP Deployment error in jboss3.2.1
naumankhanca Dec 20, 2003 4:03 PMHi,
I wrote abstract class for entity bean and deploying it in jboss 3.2.1but it's throwing exception and warning during deployment such as
quote:
--------------------------------------------------------------------------------
-3.2.1_tomcat-4.1.24/server/default/deploy/customer.jar
22:04:29,897 WARN [verifier] EJB spec violation:
Bean : CustomerBeanCMP
Section: 9.2.2
Warning: The entity bean class must not be defined as abstract.
22:04:29,907 WARN [verifier] EJB spec violation:
Bean : CustomerBeanCMP
Section: 9.4.7.1
Warning: The primkey-field element must name a public field in the bean implemen
tation class.
22:04:29,907 ERROR [MainDeployer] could not create deployment: file:/C:/jboss-3.
2.1_tomcat-4.1.24/server/default/deploy/customer.jar
org.jboss.deployment.DeploymentException: Verification of Enterprise Beans faile
d, see above for error messages.
at org.jboss.ejb.EJBDeployer.create(EJBDeployer.java:487)
..........so on
--------------------------------------------------------------------------------
Here is the code of my entity bean class
quote:
--------------------------------------------------------------------------------
package customer;
import javax.ejb.*;
public abstract class CustomerBeanCMP implements EntityBean{
private EntityContext context;
public String ejbCreate(String last,String first,String addr){
this.setLast(last);
this.setFirst(last);
this.setPK(makePK());
this.setAddress(addr);
return null;
}
public void ejbPostCreate(String last,String first,String addr){
}
public abstract String getLast();
public abstract void setLast(String last);
public abstract String getFirst();
public abstract void setFirst(String first);
public abstract String getCustAddress();
public abstract void setCustAddress(String addr);
public abstract String getPK();
public abstract void setPK(String pk);
public String getLastName(){
return this.getLast();
}
public void setLastName(String name){
this.setLast(name);
}
public String getFirstName(){
return this.getFirst();
}
public void setFirstName(String name){
this.setFirst(name);
}
public String getAddress(){
return this.getCustAddress();
}
public void setAddress(String addr){
this.setCustAddress(addr);
}
public void setEntityContext(EntityContext etx){
context=etx;
}
public void unsetEntityContext(){}
public void ejbLoad(){}
public void ejbStore(){}
public void ejbActivate(){}
public void ejbPassivate(){}
public void ejbRemove(){}
private String makePK(){
int rand=(int)(Math.random() * 42);
return ""+rand;
}
}
This is my ejb-jar.xml
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN"
"http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd">
<ejb-jar>
<enterprise-beans>
<ejb-name>CustomerBeanCMP</ejb-name>
customer.CustomerHome
customer.Customer
<ejb-class>customer.CustomerBeanCMP</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
False
<cmp-version>2.x</cmp-version>
<abstract-schema-name>CustomerSchema</abstract-schema-name>
<cmp-field>
<field-name>id</field-name>
</cmp-field>
<cmp-field>
<field-name>lastname</field-name>
</cmp-field>
<cmp-field>
<field-name>firstname</field-name>
</cmp-field>
<cmp-field>
<field-name>address</field-name>
</cmp-field>
<query-method>
<method-name>findByPrimaryKey</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<ejb-ql>
<![CDATA[SELECT OBJECT(a) FROM CustomerBeanCMP AS a WHERE id=?1]]>
</ejb-ql>
<primkey-field>id</primkey-field>
<resource-ref>
<res-ref-name>jdbc/MySqlDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<security-identity>
<use-caller-identity></use-caller-identity>
</security-identity>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<ejb-name>CustomerBeanCMP</ejb-name>
<method-name>*</method-name>
<trans-attribute>Supports</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
I will appreciate your input in this.
Regards,
Nauman