【问题标题】:Shared objects between two JRuby instances in one JVM一个 JVM 中的两个 JRuby 实例之间的共享对象
【发布时间】:2012-07-18 09:26:13
【问题描述】:

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

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

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

【问题讨论】:

    标签: java jvm jruby


    【解决方案1】:

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

    1. 要共享的变量必须以 $ 符号开头(例如 $databases)。
    2. 脚本容器的 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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-13
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多