2012-07-18 2 views
0

두 개의 JRuby 인스턴스가 동일한 JVM에서 실행되는 경우 객체를 공유 할 수 있는지 알고 싶습니다.하나의 JVM에서 두 개의 JRuby 인스턴스 간 공유 객체

두 JRubies에서 참조 된 싱글 톤 자바 클래스를 만들려고 시도했지만, 각 JRuby가 자신의 환경을 만들고 자바 클래스의 자체 버전이라고 생각합니다.

누군가 해결 방법을 알고 있습니까?

답변

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" 
관련 문제