Luke VanderHart created JRUBY-6339:
--------------------------------------
Summary: JRuby can't load from JAR files on a path with a '#'
symbol (breaks Tomcat 7 Parallel Deployment)
Key: JRUBY-6339
URL: https://jira.codehaus.org/browse/JRUBY-6339
Project: JRuby
Issue Type: Bug
Components: Core Classes/Modules, Rails WAR Deployment
Affects Versions: JRuby 1.6.5
Environment: CentOS 5.5, Java 1.6
Reporter: Luke VanderHart
Tomcat 7 parallel deployment indicates versioned WARs by placing a ##VERSION
suffix on the WAR file, e.g, my-app##001.war.
(http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Parallel_deployment)
When deploying a JRuby on Rails packaged with Warbler, this results in a
RackInitializationException, the root cause of which is a MalformedURLException
thrown from line 1146 of org.jruby.runtime.load.LoadService.java. The malformed
url looks like
"jar:file:/opt/apache-tomcat-7.0.23/webapps/my-app##001/WEB-INF/lib/jruby-rack-1.1.2.jar!/vendor/rack-1.3.6/rack.rb".
That this is a malformed URL can be verified by simply passing the string to
the constructor of java.net.URL: it will throw a MalformedURLException.
Everything after the sharp symbol is being interpreted as a fragment rather
than part of the file path.
One possible solution is to escape the sharp signs in a file path using
standard URL escaping. '##' becomes '%23%23'. Experimentation confirms that
Java is capable of parsing and reading from the example URL given above when it
is escaped in this way.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email