Hi Jeff! Thanks alot! I see I'm not the only one up at 4:00AM! I really, really appreciate your help with this. I'll look at that right away. In the meantime, I solved the problem minutes before your email arrived. Apparently, Orion does not like for the create() method on the bean class to not set a value for the primary key. I was leaving them set to null, which was causing the NPE. I replicated this in a small, simple sample that does nothing more than have a servlet create an entity bean (in EJB 2.0, of course). Anyhow, I don't know what the scoop on this is. I'm going to review the spec, since I thought that was legal behavior. Then again, anything seels legal at 4:00AM!!! Thanks again!! I'll let you know what I figure out. Jim --On Wednesday, October 18, 2000 1:16 AM -0700 Jeff Schnitzer <[EMAIL PROTECTED]> wrote: > I took a quick look through and noticed one thing which looks strange. > > I believe that when you use a primary key class for a compound key, you > should *not* make the key class a cmp member of the EJB. Rather, the > EJB needs to have cmp fields which are named the same as the public > fields in the primary key class. The container figures out how to map > it all out. > > Take a look at section 9.10.1.2 of the spec. I'm pretty sure this is > your problem. > > I seem to remember one of the Orion guys mentioning that any > less-than-stellar error messages should be considered bugs to be logged > in bugzilla :-) > > Good luck, > Jeff > >> -----Original Message----- >> From: Jim Archer [mailto:[EMAIL PROTECTED]] >> Sent: Tuesday, October 17, 2000 1:54 PM >> To: Orion-Interest >> Cc: Jeff Schnitzer >> Subject: RE: Please help! I get null pointer exception after calling >> createonan EB with EJB 2.0 CMP Orion 1.3.8... >> >> >> OK, here is the code and deployment descriptor. I apologize >> that there is a >> lot here, but I have included one entity bean, a session bean >> that creates >> this entity bean, and the deployment descriptor. >> >> Eventually I am planning to move all the address information into a >> dependant object, but heck, I have to get create working first ;-) >> >> Thanks VERY much! >> >> Jim >> >> >> // CrHome.java >> >> package com.regtek.eb20; >> >> import java.rmi.RemoteException; >> import java.util.*; >> import javax.ejb.CreateException; >> import javax.ejb.EJBHome; >> import javax.ejb.FinderException; >> >> import com.regtek.types.RegnetCR; >> import com.regtek.types.RegnetTag; >> >> public interface CrHome extends EJBHome { >> Cr create() >> throws CreateException, RemoteException; >> >> Cr create(RegnetCR cr) >> throws CreateException, RemoteException; >> >> Cr findByPrimaryKey(RegnetTag primaryKey) >> throws FinderException, RemoteException; >> >> Collection findByLastname(String lastname) >> throws FinderException, RemoteException; >> >> Collection findByFullName(String lastname, String firstname) >> throws FinderException, RemoteException; >> >> Collection findByEmail(String email) >> throws FinderException, RemoteException; >> >> Collection findByPhone(String phone) >> throws FinderException, RemoteException; >> >> Collection findAll() >> throws FinderException, RemoteException; >> } >> >> >> //------------------------------------------------------------ >> ------------- >> ------- >> >> // CrEJB.java >> // Cr EJB 2.0 Entity Bean >> >> package com.regtek.eb20; >> >> import java.rmi.RemoteException; >> >> import java.sql.*; >> import java.util.Enumeration; >> import java.util.Vector; >> import java.util.Date; >> >> import javax.ejb.*; >> import javax.naming.*; >> import javax.sql.DataSource; >> import javax.transaction.*; >> >> import com.regtek.types.RegnetCR; >> import com.regtek.types.RegnetTag; >> >> public abstract class CrEJB implements EntityBean { >> >> protected EntityContext ejbContext; >> >> public void setEntityContext(EntityContext ctx) { >> ejbContext = ctx; >> } >> >> public void unsetEntityContext() { >> ejbContext = null; >> } >> >> public void ejbRemove() throws RemoveException { >> } >> >> public void ejbLoad() { >> } >> >> public void ejbStore() { >> } >> >> public void ejbPostCreate() throws CreateException { >> } >> >> // public void ejbPostCreate(RegnetTag tag) throws >> CreateException { >> // } >> >> public void ejbPostCreate(RegnetCR cr) throws CreateException { >> } >> >> // ------------------------------------------------------------ >> public RegnetTag ejbCreate() { >> trace("ejbCreate() entered"); >> >> initToNull(); >> >> trace("ejbCreate() entered"); >> >> // In CMP, should return null. >> return null; >> } >> >> // ------------------------------------------------------------ >> public RegnetTag ejbCreate(RegnetCR cr) >> throws CreateException { >> >> trace("ejbCreate(RegnetCR cr) entered"); >> >> initToNull(); >> >> if(cr == null) >> return null; >> >> setTag(cr.getTag()); >> >> setLastName(cr.getLastName()); >> setFirstName(cr.getFirstName()); >> setMiddleInitial(cr.getMiddleInitial()); >> >> setAddr1(cr.getAddr1()); >> setAddr2(cr.getAddr2()); >> setAddr3(cr.getAddr3()); >> setCity(cr.getCity()); >> setState(cr.getState()); >> setPostalCode(cr.getPostalCode()); >> setCountryCode(cr.getCountryCode()); >> setPhone(cr.getPhone()); >> setFax(cr.getFax()); >> setEmail(cr.getEmail()); >> >> Date now = new Date(); >> >> setDateAdded(now); >> setDateLastMod(now); >> >> trace("ejbCreate(RegnetCR cr) exiting"); >> >> >> // In CMP, should return null. >> return null; >> } >> >> // ------------------------------------------------------------ >> public void ejbPassivate() {} >> public void ejbActivate() {} >> >> // ------------------------------------------------------------ >> private void initToNull() >> { >> trace("initToNull() entered"); >> >> setTag(null); >> setFirstName(null); >> setLastName(null); >> setMiddleInitial(null); >> setAddr1(null); >> setAddr2(null); >> setAddr3(null); >> setCity(null); >> setState(null); >> setPostalCode(null); >> setCountryCode(null); >> setPhone(null); >> setFax(null); >> setEmail(null); >> setDateAdded(null); >> setDateLastMod(null); >> >> trace("initToNull() exiting"); >> } >> >> // --------------------------------------------------------- >> private void trace(String text) >> { >> java.util.Date now = new java.util.Date(); >> System.out.println("EB CrEJB: " + now + " " + text); >> } >> >> >> // User Methods ------------------------------------------- >> public abstract RegnetTag getTag(); >> public abstract void setTag(RegnetTag tag); >> >> public abstract String getFirstName(); >> public abstract void setFirstName(String fn); >> >> public abstract String getLastName(); >> public abstract void setLastName(String ln); >> >> public abstract String getMiddleInitial(); >> public abstract void setMiddleInitial(String mi); >> >> public abstract String getAddr1(); >> public abstract void setAddr1(String addr1); >> >> public abstract String getAddr2(); >> public abstract void setAddr2(String addr2); >> >> public abstract String getAddr3(); >> public abstract void setAddr3(String addr3); >> >> public abstract String getCity(); >> public abstract void setCity(String city); >> >> public abstract String getState(); >> public abstract void setState(String state); >> >> public abstract String getPostalCode(); >> public abstract void setPostalCode(String pc); >> >> public abstract String getCountryCode(); >> public abstract void setCountryCode(String ctryCode); >> >> public abstract String getPhone(); >> public abstract void setPhone(String phone); >> >> public abstract String getFax(); >> public abstract void setFax(String fax); >> >> public abstract String getEmail(); >> public abstract void setEmail(String email); >> >> public abstract Date getDateAdded(); >> public abstract void setDateAdded(Date now); >> >> public abstract Date getDateLastMod(); >> public abstract void setDateLastMod(Date lastMod); >> } >> >> >> //------------------------------------------------------------ >> -------------- >> >> // Cr.java >> >> // This is the Cr EB remote interface - Its a CMP EJB v1.1 EJB >> >> package com.regtek.eb20; >> >> import java.rmi.RemoteException; >> import javax.ejb.EJBObject; >> >> import com.regtek.types.RegnetTag; >> >> public interface Cr extends EJBObject { >> public RegnetTag getTag() throws RemoteException; >> public void setTag(RegnetTag tag) throws RemoteException; >> >> public String getLastName() throws RemoteException; >> public void setLastName(String ln) throws RemoteException; >> >> public String getFirstName() throws RemoteException; >> public void setFirstName(String fn) throws RemoteException; >> >> public String getMiddleInitial() throws RemoteException; >> public void setMiddleInitial(String mi) throws RemoteException; >> >> public String getAddr1() throws RemoteException; >> public void setAddr1(String addr1) throws RemoteException; >> >> public String getAddr2() throws RemoteException; >> public void setAddr2(String addr2) throws RemoteException; >> >> public String getAddr3() throws RemoteException; >> public void setAddr3(String addr3) throws RemoteException; >> >> public String getCity() throws RemoteException; >> public void setCity(String city) throws RemoteException; >> >> public String getState() throws RemoteException; >> public void setState(String state) throws RemoteException; >> >> public String getPostalCode() throws RemoteException; >> public void setPostalCode(String zip) throws RemoteException; >> >> public String getCountryCode() throws RemoteException; >> public void setCountryCode(String countryCode) throws >> RemoteException; >> >> public String getPhone() throws RemoteException; >> public void setPhone(String phone) throws RemoteException; >> >> public String getFax() throws RemoteException; >> public void setFax(String fax) throws RemoteException; >> >> public String getEmail() throws RemoteException; >> public void setEmail(String email) throws RemoteException; >> } >> >> >> // >> -------------------------------------------------------------- >> ------------- >> --------- >> >> // CreateNewCR.java >> >> package com.regtek.slsb; >> >> import java.rmi.RemoteException; >> >> import com.regtek.types.RegnetCR; >> >> >> public interface CreateNewCR extends javax.ejb.EJBObject >> { >> public boolean makeNew(RegnetCR regCr) throws RemoteException; >> } >> >> >> //------------------------------------------------------------ >> ------------- >> >> // CreateNewCRBean.java >> >> package com.regtek.slsb; >> >> import com.regtek.types.*; >> // import com.regtek.eb_ejb_ver11.*; >> import com.regtek.eb20.*; >> >> import java.rmi.RemoteException; >> import javax.rmi.PortableRemoteObject; >> >> import javax.ejb.*; >> import javax.naming.*; >> >> public class CreateNewCRBean implements javax.ejb.SessionBean >> { >> public SessionContext context; >> private javax.naming.Context jndiContext = null; >> >> // >> --------------------------------------------------------------- >> public boolean makeNew(RegnetCR regCr) throws RemoteException >> { >> System.out.println("NewCRBean.makeNew() called"); >> >> Context context = null; >> CrHome home = null; >> Cr cr = null; >> >> try >> { >> System.out.println("NewCRBean.makeNew() >> - getting initial context"); >> context = new InitialContext(); >> >> System.out.println("NewCRBean.makeNew() >> - lookup"); >> Object obj = >> context.lookup("java:comp/env/ejb/CrHomeEb"); >> >> System.out.println("NewCRBean.makeNew() >> - get the home object"); >> home = (CrHome) >> PortableRemoteObject.narrow(obj, CrHome.class); >> >> System.out.println("NewCRBean.makeNew() >> - call create"); >> cr = home.create(regCr); >> } >> catch(RemoteException e) >> { >> >> System.err.println("RE:System/communication error: " + >> e.getMessage()); >> } >> catch(NamingException e) >> { >> System.err.println("NE:Communication >> error: " + e.getMessage()); >> } >> catch(CreateException e) >> { >> System.err.println("CE:Error creating >> contact record: " + >> e.getMessage()); >> } >> catch(ClassCastException e) >> { >> System.err.println("CCE:Error narrowing >> object: " + e.getMessage()); >> } >> >> >> return true; >> } >> >> >> // >> --------------------------------------------------------------- >> public void ejbCreate() >> { >> } >> >> // >> --------------------------------------------------------------- >> public void ejbActivate() >> { >> } >> >> // >> --------------------------------------------------------------- >> public void ejbPassivate() >> { >> } >> >> // >> --------------------------------------------------------------- >> public void ejbRemove() >> { >> } >> >> // >> --------------------------------------------------------------- >> public void setSessionContext(SessionContext ctx) >> { >> context = ctx; >> >> try >> { >> jndiContext = new javax.naming.InitialContext(); >> } >> catch(NamingException ne) >> { >> throw new EJBException(ne); >> } >> } >> } >> >> //------------------------------------------------------------ >> ------------- >> -------------- >> >> // CreateNewCRHome.java >> >> package com.regtek.slsb; >> >> import java.rmi.RemoteException; >> import javax.ejb.CreateException; >> >> public interface CreateNewCRHome extends javax.ejb.EJBHome >> { >> public CreateNewCR create() throws RemoteException, >> CreateException; >> } >> >> //------------------------------------------------------------ >> ------------- >> -- >> >> // RegnetTag.java >> >> /* >> This class is a primary key class >> */ >> >> package com.regtek.types; >> >> public class RegnetTag implements java.io.Serializable { >> public static final byte UNKNOWN = 0; >> public static final byte CR = 1; >> public static final byte DR = 2; >> public static final byte UAR = 3; >> public static final byte LIDR = 4; >> >> private int type; >> private String tagName; >> private String checkChar; >> >> >> // -------------------------------------------------------- >> // Constructors >> // -------------------------------------------------------- >> >> // This constructor creates a completely blank tag >> public RegnetTag() >> { >> setName(""); >> setType(UNKNOWN); >> checkChar = null; >> } >> >> // -------------------------------------------------------- >> // When passed a name and type, this constructor creates a >> // complete tag >> public RegnetTag(int type, String name) >> { >> setName(name); >> setType(type); >> >> caculateCheckChar(); >> } >> >> // -------------------------------------------------------- >> // This constructor will generate a unique tag of the >> // passed type >> public RegnetTag(int type) >> { >> setName(""); >> setType(type); >> generate(); >> } >> >> // -------------------------------------------------------- >> // This constructor will take a full tag name and set this >> // RegnetTag to its values by parsing the passed string tag.. >> public RegnetTag(String tagStr) >> { >> int one = tagStr.indexOf("-"); >> int two = tagStr.lastIndexOf("-"); >> int len = tagStr.length(); >> >> String left = tagStr.substring(0, one); >> String middle = tagStr.substring(one, two); >> ++two; // Increment to land on the check char >> String right = tagStr.substring(two, len); >> >> setName(middle); >> >> type = UNKNOWN; >> >> if(left.equals("CR")) >> type = CR; >> >> if(left.equals("DR")) >> type = DR; >> >> if(left.equals("UAR")) >> type = UAR; >> >> if(left.equals("LIDR")) >> type = LIDR; >> >> String check = caculateCheckChar(); >> if(!check.equals(right)) >> ; // Throw an invalid tag exception >> >> // Done >> } >> >> >> // -------------------------------------------------------- >> // public methods >> // -------------------------------------------------------- >> public void generate() >> { >> setName("GeneratedTag"); >> caculateCheckChar(); >> } >> >> >> // -------------------------------------------------------- >> // private methods >> // -------------------------------------------------------- >> private String caculateCheckChar() >> { >> checkChar = "X"; >> return checkChar; >> } >> >> >> // -------------------------------------------------------- >> // Public setters here >> // -------------------------------------------------------- >> >> public void setName(String name) >> { >> tagName = name; >> caculateCheckChar(); >> } >> >> // -------------------------------------------------------- >> public void setType(int type) >> { >> type = type; >> caculateCheckChar(); >> } >> >> >> // -------------------------------------------------------- >> // public getters here >> // -------------------------------------------------------- >> >> public String getFullName() >> { >> String pre = ""; >> >> if (type == CR) >> { >> pre = "CR"; >> } >> >> if (type == DR) >> { >> pre = "DR"; >> } >> >> if (type == UAR) >> { >> pre = "UAR"; >> } >> >> if (type == LIDR) >> { >> pre = "LIDR"; >> } >> >> return pre + "-" + tagName + "-" + checkChar; >> } >> >> // -------------------------------------------------------- >> public String getName() >> { >> return tagName; >> } >> >> // -------------------------------------------------------- >> public int getType() >> { >> return type; >> } >> >> // -------------------------------------------------------- >> // These methods are required by the spec for any type to be >> // used as a primary key type >> // -------------------------------------------------------- >> public int hashCode() >> { >> String str = getFullName(); >> int hc = str.hashCode(); >> >> return hc; >> } >> >> // -------------------------------------------------------- >> public boolean equals(Object obj) >> { >> if(obj == null || !(obj instanceof RegnetTag)) >> return false; >> >> String me = this.getFullName(); >> String it = ((RegnetTag) obj).getFullName(); >> >> if(me.equals(it)) >> return true; >> >> return false; >> } >> >> // -------------------------------------------------------- >> public String toString() >> { >> return this.getFullName(); >> } >> >> } >> >> //------------------------------------------------------------ >> ------------- >> -- >> >> >> >> <?xml version="1.0"?> >> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise >> JavaBeans 2.0//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_2_0.dtd"> >> <ejb-jar> >> <description>RegNet</description> >> <display-name>RegNet</display-name> >> <enterprise-beans> >> <entity> >> <description>RegNet CR - Contact >> Record</description> >> <display-name>The com.regtek.eb20.Cr >> stateless session >> bean</display-name> >> <ejb-name>com.regtek.eb20.Cr</ejb-name> >> <home>com.regtek.eb20.CrHome</home> >> <remote>com.regtek.eb20.Cr</remote> >> <ejb-class>com.regtek.eb20.CrEJB</ejb-class> >> <persistence-type>Container</persistence-type> >> >> <prim-key-class>com.regtek.types.RegnetTag</prim-key-class> >> <reentrant>False</reentrant> >> >> >> <cmp-field><field-name>tag</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>middleInitial</field-name></cmp-field> >> >> <cmp-field><field-name>addr1</field-name></cmp-field> >> >> <cmp-field><field-name>addr2</field-name></cmp-field> >> >> <cmp-field><field-name>addr3</field-name></cmp-field> >> >> <cmp-field><field-name>city</field-name></cmp-field> >> >> <cmp-field><field-name>state</field-name></cmp-field> >> >> <cmp-field><field-name>postalCode</field-name></cmp-field> >> >> <cmp-field><field-name>countryCode</field-name></cmp-field> >> >> <cmp-field><field-name>phone</field-name></cmp-field> >> >> <cmp-field><field-name>fax</field-name></cmp-field> >> >> <cmp-field><field-name>email</field-name></cmp-field> >> >> <cmp-field><field-name>dateAdded</field-name></cmp-field> >> >> <cmp-field><field-name>dateLastMod</field-name></cmp-field> >> >> <primkey-field>tag</primkey-field> >> </entity> >> >> <entity> >> <description>RegNet UAR - Contact >> Record</description> >> >> <display-name>com.regtek.eb20.UarEJB</display-name> >> <ejb-name>com.regtek.eb20.UarEJB</ejb-name> >> <home>com.regtek.eb20.UarHome</home> >> <remote>com.regtek.eb20.Uar</remote> >> <ejb-class>com.regtek.eb20.UarEJB</ejb-class> >> <persistence-type>Container</persistence-type> >> >> <prim-key-class>com.regtek.types.RegnetTag</prim-key-class> >> <reentrant>False</reentrant> >> >> >> <cmp-field><field-name>tag</field-name></cmp-field> >> >> <cmp-field><field-name>password</field-name></cmp-field> >> >> <cmp-field><field-name>personal</field-name></cmp-field> >> >> <cmp-field><field-name>endUser</field-name></cmp-field> >> >> <cmp-field><field-name>entityName</field-name></cmp-field> >> >> <cmp-field><field-name>addr1</field-name></cmp-field> >> >> <cmp-field><field-name>addr2</field-name></cmp-field> >> >> <cmp-field><field-name>addr3</field-name></cmp-field> >> >> <cmp-field><field-name>city</field-name></cmp-field> >> >> <cmp-field><field-name>state</field-name></cmp-field> >> >> <cmp-field><field-name>postalCode</field-name></cmp-field> >> >> <cmp-field><field-name>countryCode</field-name></cmp-field> >> >> <cmp-field><field-name>phone</field-name></cmp-field> >> >> <cmp-field><field-name>fax</field-name></cmp-field> >> >> <cmp-field><field-name>crIsOwned</field-name></cmp-field> >> <cmp-field><field-name>cr</field-name></cmp-field> >> <ejb-ref> >> <ejb-ref-name>ejb/CrHomeEb</ejb-ref-name> >> <ejb-ref-type>Entity</ejb-ref-type> >> <home>com.regtek.eb20.CrHome</home> >> <remote>com.regtek.eb20.Cr</remote> >> </ejb-ref> >> <primkey-field>tag</primkey-field> >> </entity> >> <session> >> <description>Create a CR</description> >> >> <display-name>com.regtek.slsb.CreateNewCR</display-name> >> <ejb-name>com.regtek.slsb.CreateNewCR</ejb-name> >> <home>com.regtek.slsb.CreateNewCRHome</home> >> <remote>com.regtek.slsb.CreateNewCR</remote> >> >> <ejb-class>com.regtek.slsb.CreateNewCRBean</ejb-class> >> <session-type>Stateless</session-type> >> <transaction-type>Container</transaction-type> >> <ejb-ref> >> <ejb-ref-name>ejb/CrHomeEb</ejb-ref-name> >> <ejb-ref-type>Entity</ejb-ref-type> >> <home>com.regtek.eb20.CrHome</home> >> <remote>com.regtek.eb20.Cr</remote> >> </ejb-ref> >> </session> >> >> <session> >> <description>Create a UAR</description> >> >> <display-name>com.regtek.slsb.CreateNewUAR</display-name> >> >> <ejb-name>com.regtek.slsb.CreateNewUAR</ejb-name> >> <home>com.regtek.slsb.CreateNewUARHome</home> >> <remote>com.regtek.slsb.CreateNewUAR</remote> >> >> <ejb-class>com.regtek.slsb.CreateNewUARBean</ejb-class> >> <session-type>Stateless</session-type> >> <transaction-type>Container</transaction-type> >> <ejb-ref> >> <ejb-ref-name>ejb/UarHomeEb</ejb-ref-name> >> <ejb-ref-type>Entity</ejb-ref-type> >> <home>com.regtek.eb20.UarHome</home> >> <remote>com.regtek.eb20.Uar</remote> >> </ejb-ref> >> <ejb-ref> >> <ejb-ref-name>ejb/CrHomeEb</ejb-ref-name> >> <ejb-ref-type>Entity</ejb-ref-type> >> <home>com.regtek.eb20.CrHome</home> >> <remote>com.regtek.eb20.Cr</remote> >> </ejb-ref> >> </session> >> </enterprise-beans> >> <relationships> >> <ejb-relation> >> <ejb-relation-name>UAR-CR</ejb-relation-name> >> <ejb-relationship-role> >> <ejb-relationship-role-name> >> UAR-has-CR >> </ejb-relationship-role-name> >> <multiplicity>one</multiplicity> >> <role-source> >> >> <ejb-name>com.regtek.eb20.UarEJB</ejb-name> >> </role-source> >> <cmr-field> >> >> <cmr-field-name>cr</cmr-field-name> >> >> <cmr-field-type>com.regtek.eb20.CrEJB</cmr-field-type> >> </cmr-field> >> </ejb-relationship-role> >> <ejb-relationship-role> >> <ejb-relationship-role-name> >> CR-belongsto-UAR >> </ejb-relationship-role-name> >> <multiplicity>one</multiplicity> >> <role-source> >> >> <ejb-name>com.regnet.eb20.UarEJB</ejb-name> >> </role-source> >> </ejb-relationship-role> >> </ejb-relation> >> >> </relationships> >> >> <assembly-descriptor> >> <security-role> >> <description>Users</description> >> <role-name>users</role-name> >> </security-role> >> </assembly-descriptor> >> </ejb-jar> >> >> >> >> >> >> >> >> >> >> --On Tuesday, October 17, 2000 11:32 AM -0700 Jeff Schnitzer >> <[EMAIL PROTECTED]> wrote: >> >> > I have had no problems creating CMP entity beans from >> session beans with >> > EJB2.0. Seems to work as advertsied :-) >> > >> > I suggest posting your code and descriptors; I'll take a >> look, and the >> > more examples of EJB2.0 beans floating around the better :-) >> > >> > Jeff >> > >> >> -----Original Message----- >> >> From: Jim Archer [mailto:[EMAIL PROTECTED]] >> >> Sent: Monday, October 16, 2000 4:18 PM >> >> To: Orion-Interest >> >> Subject: Please help! I get null pointer exception after >> >> calling create >> >> onan EB with EJB 2.0 CMP Orion 1.3.8... >> >> >> >> >> >> >> >> Hi All... >> >> >> >> Please help me out wityh this if you can. I'm really stuck >> >> and already >> >> behind schedual, so any ideas would be appreciated... >> >> >> >> I'm using Orion 1.3.8 and EJB 2.0 for CMP. >> >> >> >> I have written a fairley simple stateless session bean that's >> >> job is to >> >> just create a particular entity bean and populate it. This >> >> session bean is >> >> called from a servlet. >> >> >> >> When the session bean calls create on the home interface >> >> object of the >> >> entity bean it wants to create, the create method seems to >> >> execute properly >> >> and returns null. This seems true reguardless of which of two >> >> create() >> >> methods I call. >> >> >> >> After the create() method returns but before the next line >> of code is >> >> executed, Orion throws the following exception: >> >> >> >> java.lang.NullPointerException >> >> at >> >> >> CrHome_EntityHomeWrapper7.hashCode(CrHome_EntityHomeWrapper7.java:127 >> >> ) >> >> at com.evermind.util.ExternalHashSet.get(JAX) >> >> at >> >> >> CrHome_EntityHomeWrapper7.create(CrHome_EntityHomeWrapper7.java:335) >> >> at >> >> com.regtek.slsb.CreateNewCRBean.makeNew(CreateNewCRBean.java:41) >> >> at >> >> >> CreateNewCR_StatelessSessionBeanWrapper2.makeNew(CreateNewCR_Stateles >> >> sSessionBeanWrapper2.java:54) >> >> at >> com.regtek.protocol_servlets.MakeCR.doPost(MakeCR.java:92) >> >> at javax.servlet.http.HttpServlet.service(HttpServlet.java) >> >> at javax.servlet.http.HttpServlet.service(HttpServlet.java) >> >> at javax.servlet.http.HttpServlet.service(HttpServlet.java) >> >> at com.evermind.server.http.d1.si(JAX) >> >> at com.evermind.server.http.d1.forward(JAX) >> >> at com.evermind.server.http.ed.sp(JAX) >> >> at com.evermind.server.http.ed.so(JAX) >> >> at com.evermind.util.f.run(JAX) >> >> >> >> Of course, I have a pile of code and descriptors, but didn't >> >> want to post >> >> all that. If it is necessary, I will do so. Its not that I >> >> didn't want to, >> >> but I'm not sure which of it is relevant to this problem and >> >> posting all of >> >> it would make for a very long message. >> >> >> >> If someone could give me an idea of how to solve this I would >> >> appreciate >> >> it. I went through the archives and saw one other posting >> >> from Sep 22 from >> >> someone who was having this exact problem, but I could find >> >> no reply. I >> >> sent that guy a note, and he wrote back telling me he gave >> up on it. >> >> >> >> I would post a bug in Bugzilla, but I'm not sure this is a >> >> bug. It seems >> >> too fundamental a problem to be a bug in Orion. >> >> >> >> Thanks very much. >> >> >> >> Jim >> >> >> >> >> >> >> >> >> >> >> >> >> >>