Эффективный способ выполнения http-запросов к серверу на Java - PullRequest
2 голосов
/ 01 июля 2010

Я работаю над программным обеспечением, которое выполняет обширные запросы к базе данных, которая имеет интерфейс http. Поэтому моя программа анализирует и обрабатывает запросы в виде длинных http: // address ..

Я понял, что узким местом всей этой системы являются запросы, и передача данных едва превышает 20 КБ / с, даже если я сижу в сети университета с гигабитным соединением. Недавно мой друг упомянул, что я мог написать свой код неэффективно, и это может быть причиной недостаточной скорости процесса. Поэтому мой вопрос заключается в том, какой самый быстрый / самый эффективный способ получения данных из веб-источника на Java.

Вот код, который у меня сейчас есть:

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();
 }

Ответы [ 2 ]

2 голосов
/ 01 июля 2010

Ваш код выглядит хорошо для меня. Фрагмент кода не объясняет медленное чтение.

Возможные проблемы:

  1. Проблемы с сетью. Проведите тестирование конечной сети, чтобы убедиться, что сеть работает так быстро, как вы думаете.
  2. Проблемы с сервером. Возможно, сервер работает слишком медленно.
  3. Поток нитей. Проверьте, нет ли у вас проблем с нитками.

Профилировщик и трассировка сети определят проблему.

1 голос
/ 01 июля 2010

В предоставленном вами коде нет ничего, что могло бы стать узким местом.Проблема, вероятно, где-то еще;например, что вы делаете с символами после их чтения, как их пишет удаленный сервер, проблемы с сетью или веб-прокси и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...