2010-08-22 14 views

Respuesta

5

Los actores remotos utilizan la serialización de Java para enviar y recibir mensajes. Dentro de la biblioteca de actores, encontrará una secuencia de entrada de objeto personalizada (https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk/src/actors/scala/actors/remote/JavaSerializer.scala) que se utiliza para serializar objetos a/desde un socket. También hay algún código de enrutamiento y otra magia.

En cualquier caso, el ClassLoader utilizado para la comunicación remota es bastante importante. Recomiendo buscar Java RMI si no está familiarizado con él. En cualquier caso, el ClassLoader que Scala elige al serializar/deserializar actores es el que se encuentra en RemoteActor y que por defecto es nulo.

Esto significa que, de forma predeterminada, no estará satisfecho sin especificar un ClassLoader;).

Si usted estuviera en un entorno que controla cargadores de clases, como OSGi, usted quiere asegurarse de que se establece este valor a un cargador de clases que tiene acceso a todas las clases utilizadas por todos los actores serializados.

Espero que ayude!

+0

Gracias por la respuesta completa. ¿No hay forma de que Scala elija un mejor incumplimiento que nulo? –

+0

'null' es la plataforma predeterminada, hasta donde yo sé. En realidad, el cargador de clases 'null' hace referencia al" cargador de clases del sistema "que configura el tiempo de ejecución de Java. – soc

+0

¿Por qué no está bien el cargador de clases del sistema? –

Cuestiones relacionadas