You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2008/03/20 04:47:46 UTC
svn commit: r639146 -
/openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
Author: dblevins
Date: Wed Mar 19 20:47:38 2008
New Revision: 639146
URL: http://svn.apache.org/viewvc?rev=639146&view=rev
Log:
Merging r637630 - http://svn.apache.org/viewvc?rev=637630&view=rev
svn merge -r 637629:637630 https://svn.apache.org/repos/asf/openejb/trunk/openejb3 .
------------------------------------------------------------------------
r637630 | dain | 2008-03-16 12:33:07 -0700 (Sun, 16 Mar 2008) | 1 line
Fix windows file locking for standalone ejb-jar files
------------------------------------------------------------------------
Modified:
openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
Modified: openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=639146&r1=639145&r2=639146&view=diff
==============================================================================
--- openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java (original)
+++ openejb/branches/openejb-3.0/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java Wed Mar 19 20:47:38 2008
@@ -63,6 +63,7 @@
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
import org.apache.openejb.util.URLs;
+import org.apache.openejb.util.UrlCache;
import static org.apache.openejb.util.URLs.toFile;
import org.apache.xbean.finder.ClassFinder;
import org.apache.xbean.finder.ResourceFinder;
@@ -94,10 +95,30 @@
try {
// determine the module type
Class moduleClass;
+ File tmpFile = null;
try {
- moduleClass = discoverModuleType(baseUrl, ClassLoaderUtil.createTempClassLoader(doNotUseClassLoader), true);
+ // TODO: ClassFinder is leaking file locks, so copy the jar to a temp dir
+ // when we have a possible ejb-jar file (only ejb-jars result in a ClassFinder being used)
+ URL tempURL = baseUrl;
+ if (jarFile.isFile() && UrlCache.cacheDir != null &&
+ !jarFile.getName().endsWith(".ear") &&
+ !jarFile.getName().endsWith(".war") &&
+ !jarFile.getName().endsWith(".rar") ) {
+ try {
+ tmpFile = File.createTempFile("AppModule-", "", UrlCache.cacheDir);
+ JarExtractor.copy(URLs.toFile(baseUrl), tmpFile);
+ tempURL = tmpFile.toURL();
+ } catch (Exception e) {
+ throw new OpenEJBException(e);
+ }
+ }
+
+ moduleClass = discoverModuleType(tempURL, ClassLoaderUtil.createTempClassLoader(doNotUseClassLoader), true);
} catch (Exception e) {
throw new UnknownModuleTypeException("Unable to determine module type for jar: " + baseUrl.toExternalForm(), e);
+ } finally {
+ // most likely won't work but give it a try
+ if (tmpFile != null) tmpFile.delete();
}
if (AppModule.class.equals(moduleClass)) {