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