Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ear中带有JRuby rack的多个war web应用程序_Ruby_Glassfish_Jruby_Warbler_Jruby Rack - Fatal编程技术网

ear中带有JRuby rack的多个war web应用程序

ear中带有JRuby rack的多个war web应用程序,ruby,glassfish,jruby,warbler,jruby-rack,Ruby,Glassfish,Jruby,Warbler,Jruby Rack,我正试图将两个与warbler捆绑在一起的JRuby Sinatra web应用程序(运行时1.9)打包到一个ear文件中。在glassfish(2.1.1或3.1)中部署后,我发生了一次崩溃 JRuby.jar、JRuby-stdlib.jar和JRuby-rack.jar都可以在这两个应用程序的类路径中访问,如果我只保留其中一个,它们都可以正确部署。但如果我留下两个,则在机架启动期间,第二个始终会因错误而在部署时崩溃: [#|2012-07-20T10:00:10.743+0200|INFO

我正试图将两个与warbler捆绑在一起的JRuby Sinatra web应用程序(运行时1.9)打包到一个ear文件中。在glassfish(2.1.1或3.1)中部署后,我发生了一次崩溃

JRuby.jar、JRuby-stdlib.jar和JRuby-rack.jar都可以在这两个应用程序的类路径中访问,如果我只保留其中一个,它们都可以正确部署。但如果我留下两个,则在机架启动期间,第二个始终会因错误而在部署时崩溃:

[#|2012-07-20T10:00:10.743+0200|INFO|sun-appserver2.1|javax.enterprise.system.container.web|_ThreadID=18;_ThreadName=Thread-34;|PWC1412: WebModule[/licences] ServletContext.log():INFO: jruby 1.6.7.2 (ruby-1.9.2-p312) (2012-05-01 26e08ba) (Java HotSpot(TM) Client VM 1.6.0_30) [linux-i386-java]|#]

[#|2012-07-20T10:00:10.744+0200|INFO|sun-appserver2.1|javax.enterprise.system.container.web|_ThreadID=18;_ThreadName=Thread-34;|PWC1412: WebModule[/licences] ServletContext.log():INFO: using a shared (threadsafe!) runtime|#]

[#|2012-07-20T10:00:11.926+0200|INFO|sun-appserver2.1|javax.enterprise.system.container.web|_ThreadID=18;_ThreadName=Thread-34;|PWC1412: WebModule[/licences] ServletContext.log():An exception happened during JRuby-Rack startup
invalid runtime
--- System
jruby 1.6.7.2 (ruby-1.9.2-p312) (2012-05-01 26e08ba) (Java HotSpot(TM) Client VM 1.6.0_30) [linux-i386-java]
Time: 2012-07-20 10:00:11 +0200
Server: Sun GlassFish Enterprise Server v2.1.1
jruby.home: file:/usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/lib/jruby-stdlib.jar!/META-INF/jruby.home

--- Context Init Parameters:
com.sun.faces.forceLoadConfiguration = true
com.sun.faces.injectionProvider = com.sun.faces.vendor.GlassFishInjectionProvider
com.sun.faces.validateXml = true
jruby.compat.version = 1.9
public.root = /
rack.env = production

--- Backtrace
RuntimeError: invalid runtime
        require at org/jruby/RubyKernel.java:1042
        require at file:/usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/lib/jruby-stdlib.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36
            Ext at /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/gems/gems/json-1.7.3/lib/json/ext.rb:13
           JSON at /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/gems/gems/json-1.7.3/lib/json/ext.rb:12
         (root) at /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/gems/gems/json-1.7.3/lib/json/ext.rb:9
        require at org/jruby/RubyKernel.java:1042
        require at file:/usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/lib/jruby-stdlib.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36
           JSON at /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/gems/gems/json-1.7.3/lib/json/ext.rb:58
         (root) at /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/gems/gems/json-1.7.3/lib/json.rb:54
        require at org/jruby/RubyKernel.java:1042
        require at file:/usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/lib/jruby-stdlib.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:60
        require at file:/usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/lib/jruby-stdlib.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:55
         (root) at /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/gems/gems/json-1.7.3/lib/json.rb:3
        require at org/jruby/RubyKernel.java:1042
        require at /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/./lib/licences.rb:36
         (root) at /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/config.ru:1
  instance_eval at org/jruby/RubyBasicObject.java:1730
     initialize at /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/gems/gems/rack-1.4.1/lib/rack/builder.rb:51
         (root) at /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/config.ru:1

--- RubyGems
Gem.dir: /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/gems
Gem.path:
/usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/gems
Activated gems:
  rack-1.4.1
  haml-3.1.6
  rack-protection-1.2.0
  tilt-1.3.3
  sinatra-1.3.2
  json-1.7.3

--- Bundler
undefined method `bundle_path' for Bundler:Module

--- JRuby-Rack Config
compat_version = RUBY1_9
default_logger = org.jruby.rack.logging.StandardOutLogger@171c310
err = org.apache.jasper.util.SystemLogHandler@d9b1cd
filter_adds_html = true
filter_verifies_resource = false
ignore_environment = false
initial_memory_buffer_size = 
initial_runtimes = 
jms_connection_factory = 
jms_jndi_properties = 
logger = org.jruby.rack.logging.ServletContextLogger@11196da
logger_class_name = servlet_context
logger_name = jruby.rack
maximum_memory_buffer_size = 
maximum_runtimes = 
num_initializer_threads = 
out = com.sun.enterprise.server.logging.SystemOutandErrHandler$LoggingPrintStream@31c0d7
rackup = 
rackup_path = 
rewindable = true
runtime_arguments = 
runtime_timeout_seconds = 
serial_initialization = false
servlet_context = org.apache.catalina.core.ApplicationContextFacade@1033f5a
|#]

[#|2012-07-20T10:00:11.928+0200|SEVERE|sun-appserver2.1|javax.enterprise.system.container.web|_ThreadID=18;_ThreadName=Thread-34;_RequestID=bb69f89a-3d4a-46db-9b73-34ab72248271;|WebModule[/licences]ERROR: unable to create shared application instance
org.jruby.rack.RackInitializationException: invalid runtime
 from file:/usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/lib/jruby-stdlib.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
 from /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/gems/gems/json-1.7.3/lib/json/ext.rb:13:in `Ext'
 from /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/gems/gems/json-1.7.3/lib/json/ext.rb:12:in `JSON'
 from /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/gems/gems/json-1.7.3/lib/json/ext.rb:9:in `(root)'
 from org/jruby/RubyKernel.java:1042:in `require'
 from file:/usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/lib/jruby-stdlib.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
 from /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/gems/gems/json-1.7.3/lib/json/ext.rb:58:in `JSON'
 from /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/gems/gems/json-1.7.3/lib/json.rb:54:in `(root)'
 from org/jruby/RubyKernel.java:1042:in `require'
 from file:/usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/lib/jruby-stdlib.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:60:in `require'
 from file:/usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/lib/jruby-stdlib.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:55:in `require'
 from /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/gems/gems/json-1.7.3/lib/json.rb:3:in `(root)'
 from org/jruby/RubyKernel.java:1042:in `require'
 from /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/./lib/licences.rb:36:in `require'
 from /usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/licences-web_war/WEB-INF/config.ru:1:in `(root)'
 from..
根据错误,第二个应用程序似乎使用了1.8 rubygems,原因我不明白:

require at file:/usr/local/glassfish/domains/myapp-domain/applications/j2ee-apps/myapp-server/lib/jruby-stdlib.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36
我的代码中没有“rubygems”之类的要求

我的gemfile.lock是

  remote: http://rubygems.org/
  specs:
    haml (3.1.6)
    jruby-jars (1.6.7.2)
    jruby-rack (1.1.7)
    json (1.7.3)
    mime-types (1.19)
    rack (1.4.1)
    rack-protection (1.2.0)
      rack
    rack-test (0.6.1)
      rack (>= 1.0)
    rake (0.9.2.2)
    rest-client (1.6.7)
      mime-types (>= 1.16)
    rspec-mocks (2.11.1)
    rubyzip (0.9.9)
    sinatra (1.3.2)
      rack (~> 1.3, >= 1.3.6)
      rack-protection (~> 1.2)
      tilt (~> 1.3, >= 1.3.3)
    tilt (1.3.3)
    warbler (1.3.5)
      jruby-jars (>= 1.4.0)
      jruby-rack (>= 1.0.0)
      rake (>= 0.8.7)
      rubyzip (>= 0.9.4)

PLATFORMS
  x86-mingw32

DEPENDENCIES
  haml
  json
  rack-test
  rest-client
  rspec-mocks
  sinatra
  warbler

提前非常感谢。

在glassfish中,默认情况下jar文件在war应用程序之间共享,而jruby rack似乎不喜欢到处共享

在我的例子中,需要对sun-web.xml进行一些更改来隔离类加载器