From d04c29ae12b9e83857a1fc8c2aef30e415d70032 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Fri, 1 Nov 2013 11:03:31 +0100 Subject: [PATCH] Added documentation of IIOProviderContextListener. --- README.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/README.md b/README.md index 5cdb77c4..ed447780 100644 --- a/README.md +++ b/README.md @@ -155,6 +155,34 @@ For more advanced usage, and information on how to use the ImageIO API, I sugges from Oracle. +#### Deploying the plugins in a web app + +Because the `ImageIO` plugin registry (the `IIORegistry`) is "VM global", it doesn't by default work well with +servlet contexts. This is especially evident if you load plugins from the `WEB-INF/lib` or `classes` folder. + +Servlet contexts dynamically loads and unloads classes (using a new class loader per context). +If you restart your application, old classes will by default remain in memory forever (because the next time +`scanForPlugins` is called, it's another `ClassLoader` that scans/loads classes, and thus they will be new instances +in the registry). + +To work around this resource leak, I recommend using the `IIOProviderContextListener` that implements +dynamic loading and unloading of ImageIO plugins. + + + + ... + + + IIOProviderContextListener + com.twelvemonkeys.servlet.image.IIOProviderContextListener + + + ... + + + + + #### Using the ResampleOp The library comes with a resampling (image resizing) operation, that contains many different algorithms