Hi all,

I'm always getting the following exception when using CMP (ejb 1.1 and ejb
2.0) in orion 1.1.36 and earlier versions:

on the client side :
java.lang.InternalError: Object was null but still part of the cache
 at com.evermind.server.rmi.bb.invokeMethod(JAX)
 at com.evermind.server.rmi.a2.invoke(JAX)
 at com.evermind.server.rmi.a3.invoke(JAX)
 at __Proxy1.create(Unknown Source)
 at om.fnv.kozijncalc.entities.klanten.KlantTest.<init>KlantTest.java:41)
 at com.fnv.kozijncalc.entities.klanten.KlantTest.mainKlantTest.java:100)

Below is all the code and the deployment descriptors. I think it has
something todo with orion's memory (bean caching ) managment. Has someone
else have equal problems ? Or is it a bug ? Where can I find the bug list?
Thank in advance.

Wim Veninga.
[EMAIL PROTECTED]


the client code :
package com.fnv.kozijncalc.entities.klanten;

import java.io.*;
import java.util.*;
import javax.ejb.*;
import javax.rmi.*;
import javax.naming.*;

public class KlantTest
{
    static final String objNaam = "java:comp/env/Klant";
    static final String fileName =
"C:\\testKozijnEJB\\instellingen.properties";



     public KlantTest() throws Exception
     {
        FileInputStream fis = new FileInputStream(this.fileName);
        Properties props = new Properties();
        props.load(fis);
        //find the serverPortalHome
        System.out.print("Connecting to server...");
        Context context = new InitialContext(props);
        Object portalRef = context.lookup(objNaam);
        KlantHome home =
(KlantHome)PortableRemoteObject.narrow(portalRef,KlantHome.class);
        System.out.println("  done.");

          System.out.println("Creating new klant...");
          Klant klant = home.create(new Integer(26));  /* Error OCCURES HERE
*/
          klant.setKlantNaam("Jamper");
          klant.setKlantAdres("testadres");
          klant.setKlantPostcode("9501 BN");
          klant.setKlantPlaats("TestPlaats");
          klant.setKlantLand("Land");
          klant.setKlantTelefoon("Telefoon");
          klant.setKlantContactPersoon("Contact");
          System.out.println("Created klant with following data : ");
          printKlant(klant);
  }

  private void printKlant(Klant k) throws Exception
  {
      System.out.println("Found klant : ");
      System.out.println("klant nr = " + k.getKlantNr().toString());
      System.out.println("naam = " + k.getKlantNaam());
      System.out.println("adres = "+ k.getKlantAdres());
      System.out.println("postcode = "+ k.getKlantPostcode());
      System.out.println("plaats = "+ k.getKlantPlaats());
      System.out.println("land = "+ k.getKlantLand());
      System.out.println("contact = "+ k.getKlantContactPersoon());
  }

  public static void main(String args[])
  {
       try
      {
          KlantTest klantTest = new KlantTest();
      }
      catch(Exception e)
      {
          e.printStackTrace();
      }
  }
}

application-client.xml:

<?xml version="1.0"?>
<!DOCTYPE application-client PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE
Application Client 1.2//EN"
"http://java.sun.com/j2ee/dtds/application-client_1_2.dtd">
<application-client>
 <display-name>Klant Test</display-name>
 <ejb-ref>
  <ejb-ref-name>Klant</ejb-ref-name>
  <ejb-ref-type>Entity</ejb-ref-type>
  <home>com.fnv.kozijncalc.entities.klanten.KlantHome</home>
  <remote>com.fnv.kozijncalc.entities.klanten.Klant</remote>
 </ejb-ref>
</application-client>


EJB 2.0 code :

Home :
package com.fnv.kozijncalc.entities.klanten;

import javax.ejb.*;
import java.rmi.RemoteException;

public interface KlantHome extends EJBHome
{
 public Klant create(Integer klantNr) throws CreateException,
RemoteException;

 public Klant findByPrimaryKey(Integer key) throws RemoteException,
FinderException;
}

Remote :
package com.fnv.kozijncalc.entities.klanten;

import java.rmi.RemoteException;
import javax.ejb.*;

public interface Klant extends EJBObject
{
 public java.lang.Integer getKlantNr() throws RemoteException;

 public java.lang.String getKlantNaam() throws RemoteException;

 public void setKlantNaam(java.lang.String value) throws RemoteException;

 public java.lang.String getKlantAdres() throws RemoteException;

 public void setKlantAdres(java.lang.String value) throws RemoteException;

 public java.lang.String getKlantPostcode() throws RemoteException;

 public void setKlantPostcode(java.lang.String value) throws
RemoteException;

 public java.lang.String getKlantPlaats() throws RemoteException;

 public void setKlantPlaats(java.lang.String value) throws RemoteException;

 public java.lang.String getKlantLand() throws RemoteException;

 public void setKlantLand(java.lang.String value) throws RemoteException;

 public java.lang.String getKlantTelefoon() throws RemoteException;

 public void setKlantTelefoon(java.lang.String value) throws
RemoteException;

 public java.lang.String getKlantContactPersoon() throws RemoteException;

 public void setKlantContactPersoon(java.lang.String value) throws
RemoteException;
}

Bean :

package com.fnv.kozijncalc.entities.klanten;

import javax.ejb.*;

public abstract class KlantEJB implements EntityBean {
 protected EntityContext context;

 public abstract java.lang.Integer getKlantNr();
 public abstract void setKlantNr(java.lang.Integer value);
 public abstract java.lang.String getKlantNaam();
 public abstract void setKlantNaam(java.lang.String value);
 public abstract java.lang.String getKlantAdres();
 public abstract void setKlantAdres(java.lang.String value);
 public abstract java.lang.String getKlantPostcode();
 public abstract void setKlantPostcode(java.lang.String value);
 public abstract java.lang.String getKlantPlaats();
 public abstract void setKlantPlaats(java.lang.String value);
 public abstract java.lang.String getKlantLand();
 public abstract void setKlantLand(java.lang.String value);
 public abstract java.lang.String getKlantTelefoon();
 public abstract void setKlantTelefoon(java.lang.String value);
 public abstract java.lang.String getKlantContactPersoon();
 public abstract void setKlantContactPersoon(java.lang.String value);

 public void ejbLoad()  {
 }

 public void ejbStore()  {
 }

 public void ejbActivate()  {
 }

 public void ejbPassivate()  {
 }

 public void ejbRemove()  {
 }

 public void setEntityContext(EntityContext context)  {
  this.context = context;
 }

 public void unsetEntityContext()  {
  this.context = null;
 }

 public Integer ejbCreate(Integer klantNr) throws CreateException  {
  this.setKlantNr(klantNr);
  return null; // Return null when using CMP
 }

 public void ejbPostCreate(Integer klantNr)  {
 }
}

Deployement Descriptors :
ejb-jar:
<?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>
     <!-- The entity beans voor kozijnCalc  -->
<entity>
   <description></description>
   <ejb-name>Klant</ejb-name>
   <home>com.fnv.kozijncalc.entities.klanten.KlantHome</home>
   <remote>com.fnv.kozijncalc.entities.klanten.Klant</remote>
   <ejb-class>com.fnv.kozijncalc.entities.klanten.KlantEJB</ejb-class>
   <persistence-type>Container</persistence-type>
   <prim-key-class>java.lang.Integer</prim-key-class>
   <reentrant>False</reentrant>
   <cmp-field><field-name>klantNr</field-name></cmp-field>
   <cmp-field><field-name>klantNaam</field-name></cmp-field>
   <cmp-field><field-name>klantAdres</field-name></cmp-field>
   <cmp-field><field-name>klantPostcode</field-name></cmp-field>
   <cmp-field><field-name>klantPlaats</field-name></cmp-field>
   <cmp-field><field-name>klantLand</field-name></cmp-field>
   <cmp-field><field-name>klantTelefoon</field-name></cmp-field>
   <cmp-field><field-name>klantContactPersoon</field-name></cmp-field>
   <primkey-field>klantNr</primkey-field>
  </entity>
 </enterprise-beans>

 <!-- Dependant object -->
 <dependents>

 </dependents>
<!--   CMP RELATION SHIPS : De relaties die beans met elkaar of met
dependants hebben. -->
    <relationships>

    </relationships>

<assembly-descriptor>
 <container-transaction>
   <method>
    <ejb-name>com.fnv.kozijncalc.entities.klanten.Klant</ejb-name>
    <method-name>*</method-name>
   </method>
   <trans-attribute>Supports</trans-attribute>
  </container-transaction>
 </assembly-descriptor>
</ejb-jar>

Orion-ejb-jar:

<?xml version="1.0"?>
<!DOCTYPE orion-ejb-jar PUBLIC "-//Evermind//DTD Enterprise JavaBeans 1.1
runtime//EN" "http://www.orionserver.com/dtds/orion-ejb-jar.dtd">

<orion-ejb-jar deployment-version="1.1.36" deployment-time="e0a72cf703">
 <enterprise-beans>
     <entity-deployment name="Klant" location="Klant"
wrapper="KlantHome_EntityHomeWrapper35" table="klanten"
data-source="jdbc/KozijnDS">
   <primkey-mapping>
    <cmp-field-mapping name="klantNr" persistence-name="klantNr" />
   </primkey-mapping>
   <cmp-field-mapping name="klantNaam" persistence-name="klantNaam" />
   <cmp-field-mapping name="klantAdres" persistence-name="klantAdres" />
   <cmp-field-mapping name="klantPostcode" persistence-name="klantPostcode"
/>
   <cmp-field-mapping name="klantPlaats" persistence-name="klantPlaats" />
   <cmp-field-mapping name="klantLand" persistence-name="klantLand" />
   <cmp-field-mapping name="klantTelefoon" persistence-name="klantTelefoon"
/>
   <cmp-field-mapping name="klantContactPersoon"
persistence-name="klantContactPersoon" />
  </entity-deployment>
 </enterprise-beans>
 <assembly-descriptor>
  <default-method-access>
   <security-role-mapping impliesAll="true" />
  </default-method-access>
 </assembly-descriptor>
</orion-ejb-jar>


(I can sent your a .ear with al the code (also with the other beans and
relations between them for how to use ejb 2.0). Just sent me an email and i
will sent the .ear back.

Wim Veninga.
[EMAIL PROTECTED]


Reply via email to