0

同じ JVM 内で実行されている場合、2 つの JRuby インスタンス間でオブジェクトを共有できるかどうかを知りたいですか?

両方のJRubyから参照されるシングルトンJavaクラスを作成しようとしましたが、各JRubyが独自の環境とそのJavaクラスの独自のバージョンを作成しているようです。

誰かがこれを解決する方法を知っていますか?

4

1 に答える 1

0

わかりました-実際には2つの問題がありました。

  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"
于 2012-07-24T11:41:24.103 に答える