Class ASURLClassLoader.SentinelInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
com.sun.enterprise.loader.ASURLClassLoader.SentinelInputStream
All Implemented Interfaces:
Closeable, AutoCloseable
Enclosing class:
ASURLClassLoader

protected final class ASURLClassLoader.SentinelInputStream extends FilterInputStream
Wraps all InputStreams returned by this class loader to report when a finalizer is run before the stream has been closed. This helps to identify where locked files could arise.
Author:
vtsyganok, tjquinn
  • Constructor Details

    • SentinelInputStream

      protected SentinelInputStream(InputStream in)
      Constructs new FilteredInputStream which reports InputStreams not closed properly. When the garbage collector runs the finalizer. If the stream is still open this class will report a stack trace showing where the stream was opened.
      Parameters:
      in - - InputStream to be wrapped
  • Method Details

    • close

      public void close() throws IOException
      Closes underlying input stream.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class FilterInputStream
      Throws:
      IOException
    • finalize

      protected void finalize() throws Throwable
      Invoked by Garbage Collector. If underlying InputStream was not closed properly, the stack trace of the constructor will be logged! 'closed' is 'volatile', but it's a race condition to check it and how this code relates to _close() is unclear.
      Overrides:
      finalize in class Object
      Throws:
      Throwable