Tecnología

Inicio

¿Qué es un java.rmi.RemoteException?

¿Qué es un java.rmi.RemoteException?


Los programadores de Java pasan mucho de su tiempo de desarrollo de la planificación de la gestión de excepciones los casos, de las excepciones que se presentan en las bibliotecas que utilizan para la planificación de las excepciones que se va a generar con su propio código. Aunque la mayoría de ofertas de código Java con las excepciones comunes, tales que surgen de errores de archivo o referencias nulas, el RemoteException se encuentran con menos frecuencia. Como tal, es difícil para los programadores de Java para obtener una firme comprensión de cuando se ha tirado y lo que podría significar.

Un poco de historia sobre Remoting

Interacción remota es una de las "artes oscuras" de la programación de computadoras a una gran cantidad de desarrolladores. De hecho, es fácil para los desarrolladores para ir a través de toda una carrera sin tener que preocuparse de ello. Los detalles son bastante desagradable, pero el quid de la cuestión es simple: un programa en un equipo llama a código en otro equipo.

Para facilitar la discusión un poco, el término "cliente" se referirán a la aplicación del programador está desarrollando, y "servidor" se referirá a la aplicación del programador está comunicando.

Una ojeada en Java Cómo Remoting Obras

Los detalles de escribir un programa Java que realiza la comunicación remota están más allá del alcance de este artículo, pero los conceptos subyacentes son vale la pena cubrir. Un objeto remoto está representado por una interfaz. El promotor obtener una instancia de la interfaz y llamar a un método en él.

Esta llamada se enviará la solicitud al servidor, que procesará los parámetros (y devolver un resultado si es necesario). El proceso de envío de objetos / parámetros desde y hacia el servidor se llama "de clasificación", y el proceso de tomar los datos esgrimidos y traducirlo de nuevo a objetos utilizables se llama "unmarshalling".

causas

Por supuesto, las cosas siempre pueden ir mal. Tal vez un programa llama a una función que no existe en el otro equipo. Por ejemplo, si se intenta llamar a.foo () utilizando RMI, y la versión en el equipo que se está comunicando con no tiene a.foo () definido, las cosas se rompen. Otra posibilidad es que se produjo un error en el programa servidor, como un problema de conexión de base de datos.

Cuando esto sucede, usted obtendrá una RemoteException o una de sus subclases.

Sabores de RemoteException

Hay diferentes subclases de RemoteException para manejar diversas situaciones que pueden ocurrir (ver la sección de Recursos para una lista exhaustiva de las subclases). Por ejemplo, si ocurre algún problema durante las maniobras u unmarshalling los objetos, un MarshalException o UnmarshalException será lanzado respectivamente. Si se produce una excepción que no se declara en la firma de la llamada de método (es decir, una excepción de tiempo de ejecución sin marcar), un UnexpectedException será lanzado - esto podría ser una NullPointerException en el extremo del servidor, por ejemplo.

Manipulación RemoteExceptions

Mientras que la práctica general de Java recomienda controlar el caso más especializado de una excepción, esto puede ser difícil de lograr cuando se trabaja con RMI. Hay demasiadas excepciones posibles a tener en cuenta cuando se mira en las diferentes subclases RemoteException que se ocupan de ellos individualmente, probablemente no vale la pena el esfuerzo.

Dicho esto, un desarrollador puede concentrarse en áreas de problemas potenciales que pueden ser más o menos evidente durante el desarrollo. Por ejemplo, en el primer intento de una llamada a un método remoto (tal vez en la aplicación de inicialización), el desarrollador puede tratar de manejar un UnknownHostException de manera especializada. Otra posibilidad podría ser un controlador RemoteException genérico que puede tomar distintas acciones con base en la excepción específico encontrado.