13 diciembre 2006

Una curiosidad de rmi

Una cosilla de rmi que está bien pensada, que ha probado un compañero de trabajo y le ha funcionado.

Cuando un cliente de rmi pide un objeto remoto a un servidor de rmi, en realidad hay dos clases. Por un lado está el objeto real/remoto en el servidor. Por otro, el cliente tiene un objeto stub que representa al objeto real/remoto. Cuando se llama a un método del objeto stub, este llama a través de red al método del objeto real/remoto en el servidor, espera su resultado y lo devuelve.

Pues bien, aquí la curiosidad. Si obtenemos dos veces el mismo objeto remoto, tendremos dos objetos stub distintos. Si el servidor recibe dos veces el mismo objeto parámetro remoto, tendrá dos objetos parámetro stub distintos. Sin embargo, le método equals de esos dos objetos stub, devuelve true. De alguna forma, el equals "sabe" que los dos objetos stub representan el mismo objeto remoto y devuelve true.

equals clases stub

1 comentario:

Álvaro dijo...

Eso puede que se deba a algún atributo parecido al serialVersionUID que implementan algunas clases o que el equals se realiza en el lado servidor y se devuelve el resultado al cliente ¿alguién sabe el porqué verdadero del true?