modo efficace di fare http query a un server su Java
Domanda
Sto lavorando su un software che fa le query estese a un database che è ha un'interfaccia http. Così i miei programma analizza e gestisce le domande che si trovano in forma di lunga http: // indirizzi ..
Ho capito che il collo di bottiglia di tutto questo sistema è l'interrogazione e il trasferimento dei dati va appena al di sopra 20KB / s anche se sto seduto nella rete universitaria con una connessione gigabit. Recentemente un mio amico ha detto che avrei potuto scritto il mio codice in modo inefficace e che potrebbe essere la ragione per la mancanza di velocità nel processo. Quindi la mia domanda è: qual è il modo più veloce / più efficace per ottenere i dati da una fonte web in Java.
Ecco il codice che ho in questo momento:
private void handleQuery(String urlQuery,int qNumber, BufferedWriter out){
BufferedReader reader;
try{
// IO - routines: read from the webservice and print to a log file
reader = new BufferedReader(new InputStreamReader(openURL(urlQuery)));
....
}
}
private InputStream openURL(String urlName)
throws IOException
{
URL url = new URL(urlName);
URLConnection urlConnection = url.openConnection();
return urlConnection.getInputStream();
}
Soluzione
Il tuo codice sembra buono per me. Il frammento di codice non spiega la lettura lenta.
problemi possibili sono,
- Problemi di rete. Fare un test di rete end-end per assicurarsi rete è veloce come si pensa.
- problemi di server. Forse il server è troppo lento.
- contesa Discussione. Controllare se avete problemi di thread.
A profilatore e rete di traccia pin-point il problema.
Altri suggerimenti
Non c'è nulla nel codice che avete fornito che dovrebbe essere un collo di bottiglia. Il problema è probabilmente da qualche altra parte; per esempio. cosa si sta facendo con i personaggi dopo la lettura, come il server remoto li sta scrivendo, problemi di rete o WebProxy, ecc.