¿Cómo puedo oler y analizar el tráfico de Java RMI? Solo hay una solución muy parcial en wireshark. Necesito saber exactamente qué métodos se invocaron y cuáles argumentos pasaron olfateando la conexión TCP.Java RMI: Sniffer needed
Respuesta
¿Necesita "olfatearlo", o puede implementar una fábrica de sockets personalizada en el cliente o el servidor?
En el pasado creé una fábrica de socket de servidor RMI personalizada que creaba un "tee" en la secuencia leída por el servicio RMI. Como el tiempo de ejecución de RMI leía una de las transmisiones normalmente, mi código también obtuvo una copia del JRMP para analizar. En mi caso, estaba registrando las llamadas remotas, incluidos sus parámetros en forma serializada, para poder "reproducirlas" más tarde para la prueba de carga. Simplemente habilitar las opciones de registro de RMI no fue suficiente para eso.
Un problema es que la documentación de JRMP es deficiente y, en algunos casos, inexacta. Otra es que una gran parte del código necesario no es parte de la API principal de Java. Fue complicado. Pensé que entendía RMI bien antes de comenzar, pero después de hacer este pequeño proyecto, me sorprendió cuánto más tuve que aprender.
Un enfoque similar podría aplicarse a los datos de aplicaciones capturados por Wireshark, pero nunca he escrito un analizador para Wireshark y no estoy seguro de lo complicado que es.
Ethereal podría ayudar, pero es bastante bajo nivel.
Puede establecer algunos java properties para que rmi sea más detallado.
Probablemente lo que necesita este ajuste:
sun.rmi.client.logCalls (1.4 y posteriores)
Si el valor de esta propiedad es cierto, el registrador sun.rmi.client.call se establecerá en el nivel Level.FINER. Las llamadas remotas se registran en el nivel Level.FINER, y las excepciones de las llamadas remotas se registran en el nivel Level.FINE.
No conozco una herramienta que pueda olfatear y descifrar el tráfico RMI del cable. Si nadie más lo hace, una solución menos óptima podría ser instrumentar sus stubs/esqueletos (probablemente generados automáticamente si está utilizando Java 5 o posterior) o partes de la infraestructura RMI con código para generar mensajes de registro.
Puede usar AOP o alguna herramienta de manipulación de código de bytes para lograr esto. He usado JavaAssist para tareas similares a las suyas con éxito. Es muy amigable para una herramienta de esta naturaleza.
- 1. Java websocket client needed
- 2. Java RMI sin SecurityManager
- 3. RMI Java Rastreo
- 4. Java RMI AccessControlException: acceso denegado
- 5. Java: RMI vs servicios web
- 6. Cambiar puerto RMI predeterminado (Java)
- 7. OOP C++ help needed
- 8. Ventajas y desventajas de usar java rmi
- 9. ¿La comunicación en java rmi es segura?
- 10. ¿Realmente necesitamos crear Stub en Java RMI?
- 11. Java RMI - Tiempo de espera del cliente
- 12. conexión rechazada en 127.0.1.1 java RMI
- 13. Java RMI Tutorial - AccessControlException: acceso denegado (java.io.FilePermission
- 14. Head First Java - problemas de RMI
- 15. Java: tomas de corriente o RMI?
- 16. Java RMI con Scala, ¿es esto posible?
- 17. PHP include file strategy needed
- 18. sniffer Bluetooth - preferiblemente mac osx
- 19. Servicio RMI vs REST
- 20. transferencia de archivos usando RMI
- 21. Linq left join sintaxis correction needed
- 22. Diferencias RMI y CORBA?
- 23. Mejores prácticas para aplicaciones JUnit y RMI, registro RMI
- 24. Cómo remotamente el cierre de un servidor Java RMI
- 25. ¿Cuál es la diferencia entre Java RMI y JMS?
- 26. ¿Cuál es la diferencia entre Java RMI y RPC?
- 27. ¿Cómo implementar el patrón Observer con Java RMI?
- 28. Construir aplicaciones Java RMI con Eclipse (Cómo hacer rmic)
- 29. RMI y excepciones
- 30. Netbeans: C/C++ file-template variables documentation needed
That's wireshark. No ayuda demasiado. Solo analiza algunos encabezados – GabiMe
Eso es nuevo para mí. Lo bueno es que en SO puedes aprender algo incluso al responder una pregunta. –