Pool di oggetti in un ambiente Java EE
I server delle applicazioni Java EE forniscono la funzionalità del pool di connessioni che può essere utilizzata dalle applicazioni MDB (message - driven bean), Enterprise Java Beans e Servlet.
WebSphere® Application Server gestisce un lotto di connessioni ad un fornitore JMS , al fine di migliorare le prestazioni. Quando un'applicazione crea una connessione JMS , il server delle applicazioni determina se esiste già una connessione nel pool di connessioni libero. In tal caso, la connessione viene restituita all'applicazione; in caso contrario, viene creata una nuova connessione.

Quando si utilizza il provider di messaggistica IBM® MQ , le applicazioni che eseguono la messaggistica in uscita (come i servlet e i bean Java enterprise) e il componente della porta del listener del bean basato sui messaggi, possono utilizzare questi pool di connessione.
Le specifiche di attivazione del provider di messaggistica IBM MQ utilizzano la funzionalità del pool di connessioni fornita dall'adattatore di risorse IBM MQ . Per ulteriori informazioni, consultare Configurazione delle proprietà per l'adattatore di risorse WebSphere MQ .
Esempi di utilizzo del lotto connessioni spiega come le applicazioni che eseguono la messaggistica in uscita e le porte listener utilizzano il lotto libero durante la creazione delle connessioni JMS .
Free connection pool maintenance threads spiega cosa accade a queste connessioni quando un'applicazione, o una porta listener, ha terminato le connessioni.
Esempi di thread di gestione pool spiega come il pool di connessioni libere viene ripulito per evitare che le connessioni JMS diventino obsolete.
WebSphere Application Server ha un limite sul numero di connessioni che possono essere create da un factory, specificato dalla proprietà connessioni massime del factory di connessione. Il valore predefinito per questa proprietà è 10, il che significa che possono essere create fino a 10 connessioni da un factory in qualsiasi momento.
Ogni factory ha un pool di connessioni libere associato. All'avvio del server delle applicazioni, i pool di connessioni liberi sono vuoti. Il numero massimo di connessioni che possono esistere nel lotto libero per un factory è specificato anche dalla proprietà Numero massimo di connessioni.
Per informazioni sul funzionamento del pool di connessioni in WebSphere Application Server, consultare Configurazione del pool di connessioni per connessioni JMS. Per altri server delle applicazioni, fare riferimento alla documentazione appropriata del server delle applicazioni.
Modalità di utilizzo del lotto connessioni
Ogni factory di connessione JMS ha un pool di connessione associato e il pool di connessione contiene zero o più connessioni JMS . Ogni connessione JMS ha un pool di sessioni JMS associato e ogni pool di sessioni JMS contiene zero o più sessioni JMS .

- connectionFactory.createConnection()
- ConnectionFactory.createConnection(String, String)
- QueueConnectionFactory.createQueueConnection()
- QueueConnectionFactory.createQueueConnection(String, String)
- TopicConnectionFactory.createTopicConnection()
- TopicConnectionFactory.createTopicConnection(String, String)
Se non ci sono connessioni libere nel pool e il numero di connessioni create da questo factory non ha raggiunto il limite specificato nella proprietà Numero massimo di connessioni di tale factory, Connection Manager crea una nuova connessione per l'applicazione da utilizzare.
Tuttavia, se un'applicazione tenta di creare una connessione, ma il numero di connessioni create da questo factory è già uguale alla proprietà connessioni massime del factory, l'applicazione attende che una connessione diventi disponibile (per essere reinserita nel pool libero).
Il tempo di attesa dell'applicazione è specificato nella proprietà timeout connessione del lotto connessioni, che ha un valore predefinito di 180 secondi. Se una connessione viene reinserita nel lotto libero entro questo periodo di 180 secondi, Connection Manager la rimette immediatamente fuori dal lotto e la trasmette all'applicazione. Tuttavia, se il periodo di timeout scade, viene lanciata una ConnectionWaitTimeoutException.
- Connection.close()
- QueueConnection.close()
- TopicConnection.close()