CMP doesnt work for me...help...please
atatinen Aug 31, 2001 3:10 PMok. i been tryin to get this CMP running for a while.
i have a simple EJB. I am posting all of my code here.
can anyone take a look at it and let me know what am i doing wrong?.
thanks
My bean class
//
// -- Java Code Generation Process --
package junk.test.Test;
// Import Statements
import javax.ejb.*;
import java.rmi.RemoteException;
import javax.ejb.*;
public class TestEJB implements javax.ejb.EntityBean
{
 public String name;
 public EntityContext EJB_Context;
 public TestPK pk;
 public TestEJB ()
 {
 }
 public void ejbActivate ()
 {
 }
 public void ejbPassivate ()
 {
 }
 public void ejbLoad ()
 {
 }
 public void ejbStore ()
 {
 }
 public void ejbRemove () throws javax.ejb.RemoveException
 {
 }
 public void setEntityContext (javax.ejb.EntityContext ctx)
 {
 }
 public void unsetEntityContext ()
 {
 }
 public junk.test.Test.TestPK ejbCreate () throws java.rmi.RemoteException, javax.ejb.CreateException
 {
 return null;
 }
 public void ejbPostCreate () throws javax.ejb.CreateException
 {
 }
 public String getname ()
 {
 return name;
 }
 public void setname (String name)
 {
 this.name = name;
 }
 public junk.test.Test.TestPK getpk ()
 {
 return pk;
 }
 public void setpk (junk.test.Test.TestPK pk)
 {
 this.pk = pk;
 }
}
My remote interface
//
// -- Java Code Generation Process --
package junk.test.Test;
// Import Statements
import javax.ejb.*;
import java.rmi.RemoteException;
import javax.ejb.*;
public interface Test extends javax.ejb.EJBObject
{
 public String getname () throws java.rmi.RemoteException;
 public void setname (String name) throws java.rmi.RemoteException;
 public junk.test.Test.TestPK getpk () throws java.rmi.RemoteException;
 public void setpk (junk.test.Test.TestPK pk) throws java.rmi.RemoteException;
}
my home interface[/]
//
 // -- Java Code Generation Process --
 package junk.test.Test;
 // Import Statements
 import javax.ejb.*;
 import java.rmi.RemoteException;
 import javax.ejb.*;
 public interface TestHome extends javax.ejb.EJBHome
 {
 public junk.test.Test.Test findByPrimaryKey (junk.test.Test.TestPK primaryKey)
 throws java.rmi.RemoteException, javax.ejb.FinderException;
 public junk.test.Test.Test create ()
 throws java.rmi.RemoteException, javax.ejb.CreateException;
 }My ejb-jar file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd">
<ejb-jar>
<enterprise-beans>
<ejb-name>TestEJB</ejb-name>
junk.test.Test.TestHome
junk.test.Test.Test
<ejb-class>junk.test.Test.TestEJB</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>junk.test.Test.TestPK</prim-key-class>
False
<primkey-field>pk</primkey-field>
<cmp-field><field-name>pk</field-name></cmp-field>
<cmp-field><field-name>name</field-name></cmp-field>
</enterprise-beans>
</ejb-jar>
My jboss.xml
<?xml version="1.0" encoding="Cp1252"?>
false
<container-configurations />
<resource-managers />
<enterprise-beans>
<ejb-name>TestEJB</ejb-name>
<jndi-name>test/Test</jndi-name>
<configuration-name></configuration-name>
</enterprise-beans>
My Jaws.xml file
java:/OracleDB
<type-mapping>Oracle8</type-mapping>
<enterprise-beans>
<ejb-name>TestEJB</ejb-name>
<table-name>Test</table-name>
<remove-table>false</remove-table>
<create-table>false</create-table>
<cmp-field>
<field-name>pk.id</field-name>
<column-name>id</column-name>
</cmp-field>
<cmp-field>
<field-name>name</field-name>
<column-name>name</column-name>
</cmp-field>
</enterprise-beans>
MY primary key
//
// -- Java Code Generation Process --
package junk.test.Test;
// Import Statements
import java.io.Serializable;
public class TestPK implements java.io.Serializable
{
 public int id;
 public int hashCode ()
 {
 return 0;
 }
 public boolean equals ()
 {
 return true;
 }
 public java.lang.String toString ()
 {
 return "" + id; ;
 }
 public TestPK ()
 {
 }
 public int getid()
 {
 return id;
 }
 public void setid(int id)
 {
 this.id = id;
 }
}
I am using pspy to log the sql being generated. this is what see in the log when fire a client for this ejb.
SELECT COUNT(*) FROM Test WHERE id=?|SELECT COUNT(*) FROM Test WHERE id='[B@179f67'
clearly the id is being equaled to the string representation of primary key object.
I followed the docs assuming that the primary key class is dependent class and included the pk.id in the attributes in jaws.xml.
can some one please help