2012-07-18 197 views
0

我想知道如果兩個JRuby實例在同一個JVM內運行,是否可以共享一個對象?一個JVM中兩個JRuby實例之間的共享對象

我已經嘗試創建一個從兩個JRubies都引用的單例Java類,但看起來,每個JRuby都創建它自己的環境並且它是該Java類的自己的版本。

有人知道一種方法來解決這個問題嗎?

回答

0

好的 - 這實際上是兩個問題。

  1. 要共享的變量必須以$ -sign(例如$ 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" 
相關問題