Pregunta

Hola a todos, actualmente estoy emprendiendo un proyecto que involucra el uso extensivo de RMI de Java y me preguntaba si alguien tiene conocimiento de algún buen recurso al respecto.

El problema que tengo con el material que estoy encontrando actualmente es que generalmente está bastante desactualizado (como Java 1.3) y / o medio completo. Incluso me encantaría comprar un libro en él, pero al mirar en Amazon todos los libros tienen como 7 años.

Entonces, si alguien tiene conocimiento de algún buen recurso, libros o buenas implementaciones de ejemplo, me gustaría mucho saber sobre ellos. Gracias de antemano por su ayuda.

¿Fue útil?

Solución

RMI Hello World se ve bien para empezar. Por supuesto, aún es un ejemplo simple, por lo que tal vez las

Otros consejos

El Java.RMI ha cambiado muy poco a lo largo de los años, por lo que aún se puede hacer referencia a la mayoría de la documentación anterior. Tenga en cuenta que un cambio importante es la necesidad de compilar los apéndices RMI si está utilizando una versión de Java 5.0. La mayoría de las personas se han alejado de RMI y han adoptado River (anteriormente llamado Jini) para sistemas distribuidos.

Si aún está pensando en seguir adelante con RMI, le sugiero que lea la documentación de Oracle o publicando sus preguntas en sus foros .

En cuanto a los libros & # 8230; Java RMI por William Grosso o Java Network Programming por Elliotte Harold.

RMI no ha cambiado mucho. Creo que los 1.3 libros de la época estarán bien.

Gracias a todos por sus respuestas. Creo que lo que las personas dijeron acerca de que RMI no cambió mucho es correcto, sin embargo, los tutoriales podrían ser un poco mejores si ocultan algunos puntos importantes.

Al final, el mejor libro que he encontrado, que cubre algunos de los bits realmente buenos de RMI como Activation fue Programación de red Java y computación distribuida .

Miré la otra O'reilly Java RMI libro y, en mi opinión, no es muy bueno para nada más grande que el más pequeño de los proyectos de RMI.

Si va a hacer un uso intensivo de RMI, sugeriría que eche un vistazo a Spring Remoting . Ayuda mucho a abstraer el protocolo remoto, le ayuda a cambiar la implementación remota más adelante si lo necesita (por ejemplo, cambiar a Hessian o SOAP).

Una cosa que se debe tener en cuenta si utiliza RMI o cualquier otro protocolo de objetos remotos, es que puede generar mucho tráfico llamando a los métodos de los objetos remotos. Puede que no sea obvio en su código que esos objetos son remotos. Podría generar problemas de rendimiento.

Si puede, le aconsejaría que tenga una arquitectura más o menos orientada a los servicios, donde llame a servicios remotos para obtener un objeto de datos, pero que no tenga demasiado comportamiento en esos objetos ...

¿Ha intentado Sun't tutorial de RMI ? Los tutoriales de Sun son todos muy buenos y, por lo general, son el primer lugar donde comienzo para aprender algo sobre Java.

Un libro que usamos en la escuela que tiene un buen código de ejemplo es Manual para desarrolladores de J2EE . Tenga en cuenta que este es un gran libro de referencia de aproximadamente 1500 páginas con un solo capítulo (aproximadamente 50 páginas) en RMI.

El libro de O'Reilly RMI es bastante bueno. Ve por ello.

Absolutamente invaluable artículo en RMI de múltiples caseros ( hosts con múltiples direcciones IP) Explica RMI de una manera muy fácil de entender y aborda los problemas de alojamiento de registros en máquinas con más de una sola dirección IP y cómo se pueden tratar las direcciones IP privadas. Guardé mi tocino.

Además de los ya mencionados, el artículo Descripción de los elementos internos de Java RMI fue bastante decente en mi humilde opinión, pasando un poco por los aspectos internos.

Este es otro buen ejemplo de invocación de método remoto con el marco de Redisson:

Supongamos que YourServiceImpl contiene el método que necesita para invocar de forma remota e implementa la interfaz YourService .

YourServiceImpl debe registrarse en Redisson a través del objeto RemoteService:

YourService yourService = new YourServiceImpl();

RRemoteService remoteService = redisson.getRemoteService();
remoteService.register(YourService.class, yourService);

Para invocar el método de forma remota, solo se necesita la interfaz de servicio:

RRemoteService remoteService = redisson.getRemoteService();
YourService service = remoteService.get(YourService.class);

MyObject result = service.myMethod(someParam1, someParam2);

También soporta llamadas asíncronas.

// async interface for YourService
@RRemoteAsync(YourService.class)
public interface YourServiceAsync {

    RFuture<Long> someMethod1(Long param1, String param2);

    RFuture<Void> someMethod2(MyObject param);

}

RRemoteService remoteService = redisson.getRemoteService();
YourServiceAsync asyncService = remoteService.get(YourServiceAsync.class);

RFuture<Long> res = asyncService.someMethod1(12L, "param");
res.thenApply(r -> {
 ...
});

Más detalles aquí

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