I GOT the same problem. It must be some sort of file access security feature that is enabled for JBoss, but not used by Tomcat.
1) To confirm the problem, I wanted to do a simple test with the RubyGems that come packaged in the jruby-complete-1.5.2.jar file. I listed them with the following command to get the output show below. I could have packaged additional RubyGems in a separate JAR file, but I wanted to make the test as simple as possible.
$ java -jar jruby-complete-1.5.2.jar -S gem list
* LOCAL GEMS *
columnize (0.3.1)
rake (0.8.7)
rspec (1.3.0)
ruby-debug (0.10.3)
ruby-debug-base (0.10.3.2)
sources (0.0.1)
2) Since “rake” was one of the prepackaged RubyGems according to the output above, I wrote the simplest script that required it.
----- begin simple script -------------
require 'rubygems'
require 'rake'
puts 'Success! RubyGem "rake" was loaded successfully.'
------ end simple script ---------------
3) If I create a simple WAR file, and deploy it on Tomcat, I can the script running successfully.
// log output excerpt
Success! RubyGem "rake" was loaded successfully.
[editor-persistence] WARN [http-8080-3] PhaseInterceptorChm
4) If I try to deploy the same exact WAR on JBoss, I get the exception below stating that the RubyGem cannot be found.
15:00:58,319 ERROR [STDERR] classpath:/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in require'
15:00:58,319 ERROR [STDERR] : no such file to load -- rake
15:00:58,319 ERROR [STDERR] (LoadError)
15:00:58,319 ERROR [STDERR] from classpath:/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
require'
15:00:58,320 ERROR [STDERR] from :2
15:00:58,320 ERROR [STDERR] org.jruby.embed.EvalFailedException: no such file to load -- rake
15:00:58,321 ERROR [STDERR] at org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:127)
15:00:58,321 ERROR [STDERR] at org.jruby.embed.jsr223.JRubyCompiledScript.eval(JRubyCompiledScript.java:75)
15:00:58,321 ERROR [STDERR] at com.constantcontact.editor.cssinliner.impl.CssHtmlInliner.evaluateScript(CssHtmlInliner.java:167)
15:00:58,321 ERROR [STDERR] at com.constantcontact.editor.cssinliner.impl.CssHtmlInliner.retrieveInlineCssThreadSafe(CssHtmlInliner.java:298)
15:00:58,321 ERROR [STDERR] at com.constantcontact.editor.cssinliner.impl.CssHtmlInliner.inlineCss(CssHtmlInliner.java:212)
15:00:58,321 ERROR [STDERR] at com.constantcontact.editor.renderer.impl.EditorWebPageRendererImpl.renderDocument(EditorWebPageRendererImpl.java:213)
15:00:58,321 ERROR [STDERR] at com.constantcontact.editor.service.impl.EmailServiceImpl.renderDocumentAsEmail(EmailServiceImpl.java:48)
15:00:58,322 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
15:00:58,322 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
15:00:58,322 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
15:00:58,322 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:597)
15:00:58,322 ERROR [STDERR] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
15:00:58,322 ERROR [STDERR] at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
15:00:58,322 ERROR [STDERR] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
15:00:58,322 ERROR [STDERR] at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
15:00:58,322 ERROR [STDERR] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
15:00:58,323 ERROR [STDERR] at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
15:00:58,323 ERROR [STDERR] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
15:00:58,323 ERROR [STDERR] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
15:00:58,323 ERROR [STDERR] at $Proxy231.renderDocumentAsEmail(Unknown Source)
15:00:58,323 ERROR [STDERR] at com.constantcontact.editor.rs.email.impl.EmailRestServiceImpl.renderDocument(EmailRestServiceImpl.java:36)
15:00:58,323 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
15:00:58,323 ERROR [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
15:00:58,323 ERROR [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
15:00:58,324 ERROR [STDERR] at java.lang.reflect.Method.invoke(Method.java:597)
15:00:58,324 ERROR [STDERR] at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)
15:00:58,324 ERROR [STDERR] at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)
15:00:58,324 ERROR [STDERR] at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:133)
15:00:58,324 ERROR [STDERR] at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:82)
15:00:58,324 ERROR [STDERR] at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
15:00:58,324 ERROR [STDERR] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
15:00:58,324 ERROR [STDERR] at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
15:00:58,324 ERROR [STDERR] at java.util.concurrent.FutureTask.run(FutureTask.java:138)
15:00:58,325 ERROR [STDERR] at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
15:00:58,325 ERROR [STDERR] at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
15:00:58,325 ERROR [STDERR] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
15:00:58,325 ERROR [STDERR] at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:110)
15:00:58,325 ERROR [STDERR] at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:98)
15:00:58,325 ERROR [STDERR] at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:423)
15:00:58,325 ERROR [STDERR] at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:139)
15:00:58,325 ERROR [STDERR] at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:142)
15:00:58,326 ERROR [STDERR] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)
15:00:58,326 ERROR [STDERR] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:108)
15:00:58,326 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
15:00:58,326 ERROR [STDERR] at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
15:00:58,326 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
15:00:58,326 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
15:00:58,326 ERROR [STDERR] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
15:00:58,326 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
15:00:58,327 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
15:00:58,327 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
15:00:58,327 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
15:00:58,327 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
15:00:58,327 ERROR [STDERR] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
15:00:58,327 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
15:00:58,327 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
15:00:58,327 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
15:00:58,327 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
15:00:58,328 ERROR [STDERR] at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
15:00:58,328 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
15:00:58,328 ERROR [STDERR] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
15:00:58,328 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
15:00:58,328 ERROR [STDERR] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:601)
15:00:58,328 ERROR [STDERR] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
15:00:58,328 ERROR [STDERR] at java.lang.Thread.run(Thread.java:619)
15:00:58,328 ERROR [STDERR] Caused by: org.jruby.exceptions.RaiseException: no such file to load -- rake
15:00:58,329 ERROR [STDERR] at (unknown).new(classpath:/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31)
15:00:58,329 ERROR [STDERR] at Kernel.require(classpath:/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31)
15:00:58,329 ERROR [STDERR] at Kernel.require(:2)
15:00:58,329 ERROR [STDERR] at (unknown).(unknown)(:1)
15:00:59,843 INFO [STDOUT] [editor-persistence] WARN [http-0.0.0.0-8080-3] PhaseInterceptorChain.unwind(402) | Exception in handleFault on interceptor org.apache.cxf.binding.xml.interceptor.XMLFaultOutInterceptor@1e3e45f
Does anyone know why the RubyGem mechanism for JRuby does NOT work on JBoss? Any help would be greatly appreciated.