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
>> >>
>> >>
>> >>
>> >>
>>
>>
>>
>>
>>
>>





Reply via email to