code: private EJBObject getReference() throws RemoteException
      {
          EJBObject object = null;
          EJBHome home = ivHomeHandle.getEJBHome();
          Class homeClass = home.getClass();
  
          try
          {
              Method fbpk = findFindByPrimaryKey(homeClass);
              object = (EJBObject) fbpk.invoke(home, new Object[] { ivKey });
          } catch (InvocationTargetException e)
          {
              // Unwrap the real exception and pass it back
              // FFDCFilter.processException(e, CLASS_NAME + ".getReference", "144", this);
              Throwable t = e.getTargetException();
              if (t instanceof RemoteException)
              {
                  throw (RemoteException) t;
              }
              else
              {
                  throw new RemoteException("Could not find bean", t);
              }
          } catch (IllegalAccessException e)
          {
              // This shouldn't happen
              // FFDCFilter.processException(e, CLASS_NAME + ".getReference", "158", this);
              throw new RemoteException("Bad home interface definition", e);
  
          }
  
          return object;
      }
docs: /*
  d138969
  GetReference will not get called for SessionBean
  handles. The reason is the only time getReference is called is when ivEJBObject is null.
  The only time ivEJBObject is null is when readObject method is called and it reads a
  Constants.HANDLE_V1 id from the input stream. That only happens for Entity beans that
  are sent by a pre-Aquila release server. It never happens for a session bean. This can be
  seen by looking at com.ibm.ws.ejb.portable.Constants interface for HANDLE_V1 and HANDLE_V2.
  By definition, HANDLE_V2 must be used for session beans. Consequently, readObject should never
  null out ivEJBObject when a session bean Handle is being read from input stream, which means
  getReference will never be called for session beans.