Package org.apache.catalina.webresources

## Class TomcatURLStreamHandlerFactory

- java.lang.Object
- - org.apache.catalina.webresources.TomcatURLStreamHandlerFactory

- All Implemented Interfaces:
    `URLStreamHandlerFactory`

      public class TomcatURLStreamHandlerFactory
      extends Object
      implements URLStreamHandlerFactory

- - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addUserFactory​(URLStreamHandlerFactory factory)` | Since the JVM only allows a single call to `URL.setURLStreamHandlerFactory(URLStreamHandlerFactory)` and Tomcat needs to register a handler, provide a mechanism to allow applications to register their own handlers.
    `URLStreamHandler` | `createURLStreamHandler​(String protocol)` |
    `static boolean` | `disable()` | Prevent this this factory from registering with the JVM.
    `static TomcatURLStreamHandlerFactory` | `getInstance()` | Obtain a reference to the singleton instance.
    `boolean` | `isRegistered()` |
    `static boolean` | `register()` | Register this factory with the JVM.
    `static void` | `release​(ClassLoader classLoader)` | Release references to any user provided factories that have been loaded using the provided class loader.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### getInstance

          public static TomcatURLStreamHandlerFactory getInstance()

      Obtain a reference to the singleton instance. It is recommended that callers check the value of `isRegistered()` before using the returned instance.
      Returns:
        A reference to the singleton instance

    - #### register

          public static boolean register()

      Register this factory with the JVM. May be called more than once. The implementation ensures that registration only occurs once.
      Returns:
        `true` if the factory is already registered with the JVM or was successfully registered as a result of this call. `false` if the factory was disabled prior to this call.

    - #### disable

          public static boolean disable()

      Prevent this this factory from registering with the JVM. May be called more than once.
      Returns:
        `true` if the factory is already disabled or was successfully disabled as a result of this call. `false` if the factory was already registered prior to this call.

    - #### release

          public static void release​(ClassLoader classLoader)

      Release references to any user provided factories that have been loaded using the provided class loader. Called during web application stop to prevent memory leaks.
      Parameters:
        `classLoader` - The class loader to release

    - #### isRegistered

          public boolean isRegistered()

    - #### addUserFactory

          public void addUserFactory​(URLStreamHandlerFactory factory)

      Since the JVM only allows a single call to `URL.setURLStreamHandlerFactory(URLStreamHandlerFactory)` and Tomcat needs to register a handler, provide a mechanism to allow applications to register their own handlers.
      Parameters:
        `factory` - The user provided factory to add to the factories Tomcat has already registered

    - #### createURLStreamHandler

          public URLStreamHandler createURLStreamHandler​(String protocol)

      Specified by:
        `createURLStreamHandler` in interface `URLStreamHandlerFactory`