code: private void readObject(java.io.ObjectInputStream in)
                      throws IOException, ClassNotFoundException
      {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "readObject");
  
          in.defaultReadObject();
  
          // Read in eye catcher.
          byte[] eyeCatcher = new byte[EYECATCHER.length];
  
          // Insure that all of the bytes have been read.
          int bytesRead = 0;
          for (int offset = 0; offset < EYECATCHER.length; offset += bytesRead) {
  
              bytesRead = in.read(eyeCatcher, offset, EYECATCHER.length - offset);
              if (bytesRead == -1) {
                  throw new IOException("end of input stream while reading eye catcher");
              }
  
          }
  
          // Validate that the eyecatcher matches
          for (int i = 0; i < EYECATCHER.length; i++) {
  
              if (EYECATCHER[i] != eyeCatcher[i]) {
                  String eyeCatcherString = new String(eyeCatcher);
                  throw new IOException("Invalid eye catcher '" + eyeCatcherString +
                                        "' in TimerHandle input stream");
              }
  
          }
  
          // Read in the rest of the header.
          @SuppressWarnings("unused")
          short incoming_platform = in.readShort();
          short incoming_vid = in.readShort();
  
          // Verify the version is supported by this version of code.
          if (incoming_vid != VERSION_ID) {
              throw new InvalidObjectException("EJB TimerHandle data stream is not of the correct version, " +
                                               "this client should be updated.");
          }
  
          // Read in the instance data.
          ivTaskId = in.readUTF();
  
          byte[] bytes = (byte[]) in.readObject();
          ByteArray byteArray = new ByteArray(bytes);
          EJSContainer container = EJSContainer.getDefaultContainer();
          ivBeanId = BeanId.getBeanId(byteArray, container);
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "readObject: " + this);
      }
docs: Read this object from the ObjectInputStream.
  Note, this is overriding the default Serialize interface
  implementation.
  
  @see java.io.Serializable