2010-08-22 3 views

답변

5

원격 액터는 자바 직렬화를 사용하여 메시지를주고받습니다. 액터 라이브러리 안에는 객체를 소켓으로 직렬화하는 데 사용되는 사용자 객체 입력 스트림 (https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk/src/actors/scala/actors/remote/JavaSerializer.scala)이 있습니다. 라우팅 코드와 다른 마술도 있습니다.

어떤 경우 이건, 원격 처리에 사용되는 ClassLoader가 중요합니다. 당신이 익숙하지 않다면 자바 RMI를 찾아 볼 것을 권한다. 어쨌든 스칼라가 액터를 직렬화/비 직렬화 할 때 선택하는 ClassLoader는 RemoteActor에 위치한 클래스로, 기본값은 null입니다.

기본적으로 ClassLoader를 지정하지 않으면 불만이 생길 것입니다.

OSGi와 같은 클래스 로더를 제어하는 ​​환경에 있다면이 값을 연쇄 배우가 사용하는 모든 클래스에 액세스 할 수있는 클래스 로더로 설정해야합니다.

희망 하시겠습니까?

+0

철저한 답변을 보내 주셔서 감사합니다. 스칼라가 null보다 나은 기본값을 선택할 수있는 방법이 없습니까? –

+0

내가 아는 한 'null'이 플랫폼 기본값입니다. 실제로'null' 클래스 로더는 Java 런타임을 설정하는 "System class loader"를 참조합니다. – soc

+0

시스템 클래스 로더가 정상적인 이유는 무엇입니까? –