Anybody know why I would get a NPE when trying to create a simple CMP
entity instance? The exception that the client gets is:
java.lang.NullPointerException: Primary-key was null
And the server console displays:
java.lang.NullPointerException
at
RecordHome_EntityHomeWrapper8.hashCode(RecordHome_EntityHomeWrapper8.java:131)
at com.evermind.util.ExternalHashSet.get(JAX)
at
RecordHome_EntityHomeWrapper8.create(RecordHome_EntityHomeWrapper8.java:339)
at java.lang.reflect.Method.invoke(Native Method)
at com.evermind.server.rmi.bd.run(JAX)
at com.evermind.server.rmi.bb.hy(JAX)
at com.evermind.server.rmi.bb.run(JAX)
at com.evermind.util.f.run(JAX)
I know that the key (a simple String id) is getting into the ejbCreate
method, since I am printing it to the console (it displays just prior to
this message). For further reference, my client code and ejb-jar.xml are
below.
Thanks,
Jason
client:
public class test {
public static void main(String[] args) {
try {
InitialContext ic = new InitialContext();
Object ref = ic.lookup("alert.Record");
RecordHome home = (RecordHome)PortableRemoteObject.narrow(ref,
RecordHome.class);
System.out.println("Got this far -- Creating an instance:");
home.create("1234");
System.out.println("Created successfully");
} catch (Exception e) {
System.out.println(e);
}
}
}
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_2_0.dtd">
<ejb-jar>
<description>
</description>
<enterprise-beans>
<entity>
<description></description>
<ejb-name>alert.Record</ejb-name>
<home>alert.RecordHome</home>
<remote>alert.Record</remote>
<ejb-class>alert.RecordEJB</ejb-class>
<persistence-type>Container</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
<primkey-field>id</primkey-field>
<reentrant>False</reentrant>
<cmp-field><field-name>id</field-name></cmp-field>
<cmp-field><field-name>articleTitle</field-name></cmp-field>
<cmp-field><field-name>sourceTitle</field-name></cmp-field>
<cmp-field><field-name>articleAuthors</field-name></cmp-field>
<cmp-field><field-name>abstractText</field-name></cmp-field>
<cmp-field><field-name>language</field-name></cmp-field>
<cmp-field><field-name>researchAddress</field-name></cmp-field>
<cmp-field><field-name>issn</field-name></cmp-field>
<cmp-field><field-name>source</field-name></cmp-field>
<cmp-field><field-name>pubType</field-name></cmp-field>
<cmp-field><field-name>keywords</field-name></cmp-field>
<cmp-field><field-name>volume</field-name></cmp-field>
<cmp-field><field-name>issue</field-name></cmp-field>
<cmp-field><field-name>issueNote</field-name></cmp-field>
<cmp-field><field-name>pageRange</field-name></cmp-field>
<cmp-field><field-name>pubYear</field-name></cmp-field>
<cmp-field><field-name>packedTitle</field-name></cmp-field>
<cmp-field><field-name>packedAuthors</field-name></cmp-field>
<cmp-field><field-name>importDate</field-name></cmp-field>
<cmp-field><field-name>available</field-name></cmp-field>
</entity>
</enterprise-beans>
<dependents>
</dependents>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>alert.Record</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Supports</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>alert.RecordHome</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>