Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Troubleshooting Guide

- Previous: Using asadmin set Command May Produce Unexpected Results
- Next: Cannot Reinstall Application Server After Manual Deletion of Directories

# Cannot Undeploy Or Redeploy Application With Open Streams to Jar Files (Windows Only)

## Description

On Windows systems, after running an application, subsequent attempts to undeploy it or redeploy it throw exceptions about the server being unable to delete a file or rename a directory.

On Windows systems, an application may use `getClass().getResource` or `getResourceAsStream` methods to locate a resource inside the application, particularly in `jar` files that are in the application or accessible to it. If the streams remain open, subsequent attempts to redeploy or undeploy the application can fail. In addition, the Java runtime by default caches streams to `jar` files for performance reasons.

## Solution

Be sure to close streams opened by your applications. Also, if an application needs to be redeployed or undeployed repeatedly, and also needs to obtain a resource from a `jar` file using `getResource` or `getResourceAsStream`, consider using `getClass().getResource` which returns a URL object, then invoke the `url.setUseCaches` method to turn off caching for that `jar` file, and then use `url.getInputStream()` to obtain the stream.

Although turning off caching for accesses to the `jar` file can slow down performance, this approach does allow the application to be undeployed or redeployed. Note also that if the `getClass().getResourceAsStream` method is used instead, then the `jar` file in which the resource is located will be cached (this is the default Java runtime setting) and remain open until the server is stopped.

- Previous: Using asadmin set Command May Produce Unexpected Results
- Next: Cannot Reinstall Application Server After Manual Deletion of Directories

- © 2010, Oracle Corporation and/or its affiliates