We recently upgraded from JRuby 1.5.6 to 1.7.3 and I've run into an issue that
I hope someone on this list may be able to shed some light on.
I am working an a multi-threaded Java application which is built on OSGi. As
part of the upgrade to 1.7.3 I now have my jruby-complete.jar running as an
OSGi bundle and I no longer have to bundle a jruby.jar file in with my OSGi
bundle that uses JRuby. I have also switched from using ScriptingContainer to
OSGiScriptingContainer.
I am also trying to transition from using the THREADSAFE LocalContextScope to
CONCURRENT as I need a single Ruby runtime but want the receivers associated
with different threads to be maintained as thread local variables.
I first ran into JRuby issue JRUBY-6265. That issue describes an scenario
where paths that have been added to the ScriptingContainer load path are not
added to the Ruby runtime load path when LocalContextScope is set to SINGLETON
(as opposed to SINGLETHREAD). I found that this is also true when using
CONCURRENT.
I have been able to get around this issue by using the work-around described in
JRUBY-6265 by issuing ScriptingContainer.runScriplet("$: << '/desired/path';");
The next issue I ran into was with the Gem path. We re-package the
jruby-complete.jar file with several Ruby gems that our application requires.
When using THREADSAFE the Gem path is built correctly and JRuby is able to find
the Gems bundled into the jruby-complete.jar file. However, when using
CONCURRENT, the Gems are not found.
When using THREADSAFE Gem path looks like:
["/opt/application/lib/configuration/org.eclipse.osgi/bundles/3/1/.cp/META-INF/jruby.home/lib/ruby/gems/shared",
"/.gem/jruby/1.9"]
When using CONCURRENT Gem path looks like:
["classpath:/META-INF/jruby.home/lib/ruby/gems/shared", "/.gem/jruby/1.9"]
Has anyone come across a similar issue?
Best regards,
Mike
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email