code: private void handleClassEntry(String entryName, ClassVisitor visitor)
     {
  
        // build class name from relative name
        String className = getClassName(entryName.substring(CLASSES_FOLDER.length()));
  
        // check filter
        if (mustProcessClass(className) && !processedClasses.contains(className))
        {
  
           // mark this class as processed
           processedClasses.add(className);
  
           // the class file stream
           InputStream classFileStream = null;
  
           // close the stream in finally block
           try
           {
  
              /*
               * Try to open the .class file. if this isn't possible, we will scan it anyway.
               */
              classFileStream = servletContext.getResourceAsStream(entryName);
  
              if (classFileStream == null)
              {
                 if (log.isDebugEnabled())
                 {
                    log.debug("Could not obtain InputStream for class file: " + entryName);
                 }
              }
  
              // analyze the class (with or without classFileStream)
              processClass(className, classFileStream, visitor);
  
           }
           finally
           {
              try
              {
                 if (classFileStream != null)
                 {
                    classFileStream.close();
                 }
              }
              catch (IOException e)
              {
                 if (log.isDebugEnabled())
                 {
                    log.debug("Failed to close input stream: " + e.getMessage());
                 }
              }
           }
        }
  
     }
docs: Handles class entry in a WEB-INF.