Общие объекты между двумя экземплярами JRuby в одной JVM

Я хотел бы знать, возможно ли разделить объект между двумя экземплярами JRuby, если они работают внутри одной JVM?

Я уже пытался создать одноэлементный Java-класс, на который ссылаются оба JRubies, но кажется, что каждый JRuby создает свое собственное окружение и свою собственную версию этого Java-класса.

Кто-нибудь знает способ решить эту проблему?

1 ответ

Хорошо - на самом деле были две проблемы.

  1. Переменные для совместного использования должны начинаться с знака $ (например, $database).
  2. LocalContextScope контейнера сценариев должен быть установлен в правильное значение.

Если для LocalContextScope установлено значение "singleton" и "одновременный", возможно что-то вроде следующего.

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"
Другие вопросы по тегам