Come posso analizzare e analizzare il traffico Java RMI? C'è solo una soluzione molto parziale in wireshark. Ho bisogno di sapere esattamente quali metodi sono stati chiamati e quali argomenti sono passati annusando la connessione TCP.Java RMI: necessario sniffer
risposta
È necessario "annusarlo" oppure è possibile distribuire un factory socket personalizzato sul client o sul server?
In passato ho creato un factory socket server RMI personalizzato che creava un "tee" nello stream letto dal servizio RMI. Poiché il runtime RMI leggeva normalmente uno degli stream, il mio codice ha ottenuto anche una copia del JRMP. Nel mio caso, stavo registrando le chiamate remote, inclusi i loro parametri in forma serializzata, in modo che potessi "riprodurle" in seguito per il test di carico. Solo abilitando le opzioni di registrazione RMI non era sufficiente per quello.
Un problema è che la documentazione JRMP è scarsa e in alcuni casi non accurata. Un altro è che gran parte del codice necessario non fa parte dell'API Java principale. È stato complicato Pensavo di aver capito bene RMI prima di iniziare, ma dopo aver fatto questo piccolo progetto, sono rimasto sorpreso di quanto avrei dovuto imparare.
Un approccio simile potrebbe essere applicato ai dati dell'applicazione catturati da Wireshark, ma non ho mai scritto un analizzatore per Wireshark e non sono sicuro di quanto sia complicato.
Ethereal potrebbe aiutare, ma è piuttosto basso livello.
È possibile impostare alcuni java properties per rendere rmi più dettagliato.
probabilmente bisogno di questa impostazione:
sun.rmi.client.logCalls (1.4 e versioni successive)
Se il valore di questa proprietà è vera, il logger sun.rmi.client.call sarà impostato sul livello Level.FINER. Le chiamate remote vengono registrate al livello Level.FINER e le eccezioni delle chiamate remote vengono registrate al livello Level.FINE.
Non so di uno strumento in grado di rilevare e decifrare il traffico RMI dal filo. Se nessun altro lo fa, una soluzione meno ottimale potrebbe essere quella di strumentare i tuoi stub/scheletri (probabilmente generati automaticamente se stai usando Java 5 o versioni successive) o parti dell'infrastruttura RMI con codice per produrre messaggi di log.
È possibile utilizzare AOP o uno strumento di manipolazione del codice byte per ottenere ciò. Ho usato JavaAssist per compiti simili ai tuoi con successo. È molto amichevole per uno strumento di questa natura.
- 1. Java RMI - Timeout client
- 2. Java ArrayList/RMI
- 3. Cambiamento predefinito Porta RMI (Java)
- 4. Java: RMI vs servizi Web
- 5. Head First Java - Problemi RMI
- 6. La comunicazione in java rmi è sicura?
- 7. Java RMI tcp connect memory issue
- 8. Utilizzo di JAVA RMI nell'applicazione Android
- 9. Java RMI non può legarsi assistente
- 10. ClassLoader con chiamata RMI
- 11. C# Remote Invocation metodo (RMI)
- 12. È ancora necessario rmic?
- 13. necessario client Websocket Java
- 14. Qual è la differenza tra Java RMI e JMS?
- 15. Come implementare il pattern Observer con Java RMI?
- 16. Java RMI NoClassDefFoundError per javax.json.JsonValue in oggetto a distanza
- 17. collegamento Rmi rifiutato con localhost
- 18. Sniffer per localhost (sistema operativo Windows)
- 19. D-Bus: esiste uno "sniffer D-Bus"?
- 20. HTTP GET sniffer di pacchetti in Scapy
- 21. allineamento tag @param in sniffer codice php
- 22. Utilizzo del registro RMI singolo
- 23. Windows 7 x64 COM/porta seriale Sniffer/Reindirizzamento
- 24. È necessario creare PDF da bytearray (Java)
- 25. Java: è necessario sincronizzare un ExecutorService?
- 26. Perché @Override necessario in java o android?
- 27. Servizi Web Java: l'asse è necessario?
- 28. Livello java persistence super leggero necessario
- 29. VisualVM tramite firewall - Risoluzione problemi RMI
- 30. Docker rmi impossibile rimuovere le immagini
Questo è wireshark. Non aiuta troppo. Analizza solo alcune intestazioni – GabiMe
Questa è una novità per me. La cosa bella è che su SO puoi imparare qualcosa anche quando rispondi a una domanda. –