Package com.sun.enterprise.loader
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
-
-
Field Summary
-
Fields inherited from class java.io.FilterInputStream
in
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedSentinelInputStream(InputStream in)Constructs new FilteredInputStream which reports InputStreams not closed properly.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Closes underlying input stream.voidregisterStopEvent()Callback invoked by Garbage Collector.-
Methods inherited from class java.io.FilterInputStream
available, mark, markSupported, read, read, read, reset, skip
-
Methods inherited from class java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo
-
-
-
-
Constructor Detail
-
SentinelInputStream
protected SentinelInputStream(InputStream in)
Constructs new FilteredInputStream which reports InputStreams not closed properly. When the garbage collector runs the cleaner. 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 Detail
-
close
public void close() throws IOExceptionCloses underlying input stream.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classFilterInputStream- Throws:
IOException
-
registerStopEvent
public final void registerStopEvent()
Callback 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.
-
-