Я написал сервис, который используется для регистрации некоторых данных. Эту службу можно вызывать тысячи раз. Параметры передаются через сам URL. Клиентская часть выглядит примерно так:
private String getNodeInfoFromGPSForSpecificSubscriber( int subscriberId ) throws Exception {
String requestURLToNode = "http://" + GPSConstants.GPS_IP + ":" + GPSConstants.PORT_NUMBER + APIs.FetchASpeecificNodeAPI.FETCH_A_SPECIFIC_NODE + "?" + APIs.FetchASpeecificNodeAPI.SUBSCRIBER_ID + "=" + subscriberId;
URL url = new URL( requestURLToNode );
HttpURLConnection conn = ( HttpURLConnection ) url.openConnection();
conn.setRequestMethod( "GET" );
conn.setRequestProperty( "Accept", "application/xml" );
conn.setDoOutput( true );
InputStream inputStream = conn.getInputStream();
BufferedReader in = new BufferedReader( new InputStreamReader( inputStream ) );
String responseAsString = in.readLine();
in.close();
conn.disconnect();
System.out.println( ++i );
return responseAsString;
}
Но здесь каждый раз, когда открывается соединение, и, следовательно, скорость, которую я получаю, составляет всего около 1 записи в секунду. Я знаю, что мне не нужно открывать соединение каждый раз, но не могу понять, как это сделать. Пожалуйста, помогите.
14/04/11 22:47:25 ERROR client.RegisterNewCell: java.net.SocketException: No buffer space available (maximum connections reached?): connect
после нескольких запусков. - person LPD   schedule 11.04.2014in.close()
в приведенном выше коде, он будет работать быстрее, но затем перестанет выдавать это исключение. - person LPD   schedule 11.04.2014in.close()
иconn.disconnect()
вызываются только в happy-path. Может быть, вам нужна более надежная обработка исключений!? Попробуйте проверенную библиотеку, например DavidWebb, или одну из перечисленных альтернатив. - person hgoebl   schedule 12.04.2014in.close()
, скорость, которую я получаю, составляет только запрос в секунду. - person LPD   schedule 12.04.2014