Pregunta

Yo uso Commons-httpclient a las preguntas Enviar a un servidor Web. El servidor Web no cierra las conexiones, pero tiene una pequeña pérdida de memoria asociada con el contexto de conexión.

Por lo tanto, al igual que lo haría para cerrar las conexiones persistentes de vez en cuando (cada X consultas, por ejemplo), pero no he encontrado ninguna manera de hacer esto. Yo uso el MultiThreadedHTTPConnectionManager

Yo podría utilizar MultiThreadedHTTPConnectionManager.closeIdleConnections (very_small_delay), pero eso no es muy fiable: si mi código Java tiene mucho trabajo por hacer, entonces es posible que no haya una conexión nunca ociosa, porque siempre hay otros subprocesos en espera para una conexión libre .

Gracias,

¿Fue útil?

Solución

después de ejecutar un método, digamos GET, se puede leer el número responsed httpStatus, para decidir si un method.releaseConnection () necesita ser llamado.

O si usted sabe qué conexión que quiero cerrar, podría intentar

MultiThreadedHTTPConnectionManager
void    releaseConnection(HttpConnection conn) 

bien, pensé que usted tiene alguna razón que desea 'matar' una conexión. Suponga que tiene la conexión, el objeto HttpConnection, que desea cerrar en la mano. Que este método ayuda?

HttpConnection
public void close()

    Closes the socket and streams. 

Otros consejos

Puede permitirse el uso SimpleHttpConnectionManager(boolean alwaysClose)?

httpClient.setHttpConnectionManager(new SimpleHttpConnectionManager(true))

Cuando estoy usando releaseConnections() todavía hay conexiones en el estado de CLOSE_WAIT. ¿Está bien si agrego closeIdleConnections(0) después releaseConnections?

¿Esto significa volver incluso si se envía la conexión a la piscina para ser utilizado por otros clientes, pero no está cerrado / libera entonces closeIdleConnections lo cerrará?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top