Java 一个JVM中两个JRuby实例之间的共享对象

Java 一个JVM中两个JRuby实例之间的共享对象,java,jvm,jruby,Java,Jvm,Jruby,我想知道,如果两个JRuby实例在同一个JVM中运行,是否可以在它们之间共享一个对象 我已经尝试创建一个从两个JRuby中引用的单例java类,但似乎每个JRuby都创建了自己的环境和该java类的自己版本 有人知道解决这个问题的方法吗?好的-实际上有两个问题 要共享的变量必须以$符号开头(例如$数据库) 脚本容器的LocalContextScope必须设置为正确的值 如果LocalContextScope设置为“singleton”和“concurrent”,则可以执行以下操作 require

我想知道,如果两个JRuby实例在同一个JVM中运行,是否可以在它们之间共享一个对象

我已经尝试创建一个从两个JRuby中引用的单例java类,但似乎每个JRuby都创建了自己的环境和该java类的自己版本


有人知道解决这个问题的方法吗?

好的-实际上有两个问题

  • 要共享的变量必须以$符号开头(例如$数据库)
  • 脚本容器的LocalContextScope必须设置为正确的值
  • 如果LocalContextScope设置为“singleton”和“concurrent”,则可以执行以下操作

    require 'java'
    
    include Java
    import 'org.jruby.embed.ScriptingContainer'
    import 'org.jruby.embed.LocalContextScope'
    
    $a = "Test"
    
    container = ScriptingContainer.new LocalContextScope::CONCURRENT
    container.run_scriptlet "puts $a"