Registrar todas las interacciones de red de la aplicación Java
Tengo una aplicación Java monstruosa (un cliente del servidor de aplicaciones poco conocido GNUEnterprise) y su fuente, que puedo volver a compilar después de hacer algunos cambios. La aplicación utiliza mucho la red y necesito monitorear cada solicitud y respuesta. Podría usar un rastreador como Wireshark, pero la aplicación funciona con su servidor a través de SSL, por lo que al no saber la clave privada del certificado SSL, el tráfico inhalado es bastante inútil.
¿Qué puedo hacer para hacer que cada solicitud y respuesta se registre desde la propia aplicación? Necesito ver todos los encabezados enviados y recibidos. No quiero alterar todo el código responsable de la interacción de la red. Lo que quiero es poner un código como
Network.setDefaultLogger(myCustomLoggerInstance);
En algún lugar cerca del inicio de la aplicación y luego en elmyCustomLoggerInstance
hacer todo el registro que necesito.
Además, dado que todas las operaciones de red se realizan conURLConnection
s, puedo obtener encabezados de respuesta concon.getHeaderFields()
y solicitar encabezados concon.getRequestProperties()
. Pero ¿por qué las galletas no están ahí? ¿Cómo volcar las cookies enviadas y recibidas de la misma manera?
EDITAR: Lo que estoy tratando de alcanzar es imitar la comunicación de la aplicación RPC con su servidor a través de SSL, por ejemplo, usandocurl
. Para esto necesito obtener un registro detallado del tráfico de red de la aplicación.