2013-02-13 3 views
1

하나의 JVM에서 다른 시스템 설정 (예 : 라이브러리 가져 오기 경로)으로 하나 이상의 Jython 환경을 실행할 수 있습니까?단일 JVM에서 여러 Jython 환경

가능하면 올바르게 수행 할 수있는 방법을 제안하십시오.

기술적으로는 PythonInterpreter interpreter = new PythonInterpreter();이 두 번 이상 실행되는 것을 막을 수 없습니다. 그러나 나는 어딘가에 앉아있는 싱글 톤이 없다는 것을 확신하고 싶습니다.

답변

1

소스 코드를 확인한 후이 PySystemState이

Source code

public class PySystemState extends PyObject implements ClassDictInit { 
... 
    private static boolean initialized = false; 
... 

Source code

public static synchronized PySystemState doInitialize(Properties preProperties, 
               Properties postProperties, 
               String[] argv, 
               ClassLoader classLoader, 
               ExtensiblePyObjectAdapter adapter) { 
     if (initialized) { 
      return Py.defaultSystemState; 
     } 
     initialized = true; 
... 

이 PySysStatus 속성이 한 번만 설정되어 있음을 의미한다 싱글 및 PySysState를 얻을 다음 호출 것 같다 동일한 Jython 환경을 반환합니다.

커스텀 ClassLoader를 사용하여 다른 컨텍스트에서 다른 PySysState를 초기화하는 방법은 있지만, 당면한 일은 당연히 필요하지 않습니다.