Pregunta

Quiero entender cómo la implementación de proxy stub dinámico se hace realmente detrás de la escena. De acuerdo con lo que he leído, en el momento en un objeto remoto se exporta si no se encuentra ninguna clase stub generado previamente, el sistema RMI generaría un proxy dinámico para actuar como el trozo. Ese trozo se une entonces al Registro RMI y más tarde accesible por algún cliente RMI.

La pregunta es: ya que el intermediario es en realidad un proxy generado dinámicamente, su definición de clase no estaría disponible en el lado del cliente, entonces ¿cómo es que el cliente todavía es capaz de recuperar el código auxiliar del Registro RMI? ¿Hay algún tipo de clase de carga dinámica sucediendo detrás de la escena o hace uso de RMI otra técnica para trabajar alrededor de esto?

¿Fue útil?

Solución

Java.lang.reflect.Proxy es serializable y tiene un apoyo especial en ObjectOutputStream y ObjectInputStream. Básicamente, sólo las interfaces implementadas y el manejador de invocación son serializados, y un nuevo proxy dinámico se construye a partir de que durante la deserialización.

Otros consejos

RMI hace uso de la carga de clase dinámica - la ruta de clase se envía alongwith la llamada como una 'anotación de ruta de clase' a partir del cual el cliente carga la clase. Usted puede mirar en el RMI aplicación para obtener más información - que está disponible como parte de la fuente de JDK. Específicamente, las clases ObjectOutputStream y RMIClassloader.

Actualización: RMI no se inicia un servidor HTTP - de hecho, se necesitaría su solución personalizada para esto. Uno de ellos como usted menciona puede ser un servidor HTTP que se ejecuta, hacer que las clases disponibles a través del servidor, y pasar el código base con dirección / puerto del servidor HTTP en sus talones, para que sus clientes pueden descargarlos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top