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

时间:2012-07-18 09:26:14

标签: java jvm jruby

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

我已经尝试创建一个从两个JRubies引用的单例java类,但似乎每个JRuby创建它自己的环境,并且它是该java类的自有版本。

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

1 个答案:

答案 0 :(得分:0)

好的 - 实际上是两个问题。

  1. 要共享的变量必须以$ -sign开头(例如$ database)。
  2. 必须将脚本容器的LocalContextScope设置为正确的值。
  3. 如果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"