You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Michael Dick (JIRA)" <ji...@apache.org> on 2008/02/20 16:01:44 UTC

[jira] Assigned: (OPENJPA-518) openJpa jar is being locked causing future deployments on an app server to fail

     [ https://issues.apache.org/jira/browse/OPENJPA-518?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael Dick reassigned OPENJPA-518:
------------------------------------

    Assignee: Michael Dick

> openJpa jar is being locked causing future deployments on an app server to fail
> -------------------------------------------------------------------------------
>
>                 Key: OPENJPA-518
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-518
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: lib
>    Affects Versions: 1.0.1
>         Environment: Windows XP, Sun PE Application Server 8.1, JDK 1.5.0_14-b03, Spring 2.5
>            Reporter: Adam Toback
>            Assignee: Michael Dick
>            Priority: Minor
>   Original Estimate: 0.17h
>  Remaining Estimate: 0.17h
>
> So when I deploy my war file on the application server the first time, everything works fine.  However, if I then try to undeploy or redeploy over the existing version the deployment will fail because the openjpa.jar in the WEB-INF/lib directory of my war file is locked.
> I did track down the bug to:
>     org.apache.openjpa.lib.util.Services
> The addResources method is opening a URL Connection and not performing a setUseCaches(false).  I made the following changes, implemented the new jar in my webapp and it fixed the problem. 
>     private static void addResources(URL url, Set set) throws IOException {
>         InputStream in = null;
>         BufferedReader reader = null;
>         try {
>             java.net.URLConnection ucon = url.openConnection();
>             ucon.setUseCaches(false);
>             in = ucon.getInputStream();
>             reader = new BufferedReader(new InputStreamReader(in));
>             String line;
>             while ((line = reader.readLine()) != null) {
>                 if (line.trim().startsWith("#")
>                     || line.trim().length() == 0)
>                     continue;
>                 StringTokenizer tok = new StringTokenizer(line, "# \t");
>                 if (tok.hasMoreTokens()) {
>                     String next = tok.nextToken();
>                     if (next != null) {
>                         next = next.trim();
>                         if (next.length() > 0 && !next.startsWith("#"))
>                             set.add(next);
>                     }
>                 }
>             }
>         } 
>         catch (Exception e) {
>             throw new IOException(e.toString());
>         }
>         finally {
>             try { reader.close(); } catch (IOException re) {}
>             try { in.close(); } catch (IOException ioe) {}
>         }
>     }
> Only the setUseCaches(false) should be necessary, but I was just making sure that anything that was opened was closed.
> Thanks,
> Adam

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.