Quando CICS® è un client HTTP, la connessione tra CICS e il server può essere chiusa dal server o da CICS in seguito a un comando emesso dal programma applicativo. Se si utilizza il pooling delle connessioni, CICS mantiene le connessioni adatte in un pool di connessioni inattive per riutilizzarle, invece di chiuderle.
Informazioni su questa attività
Per impostazione predefinita, la connessione tra CICS e il server viene chiusa su richiesta del server o al termine dell'utilizzo da parte del programma applicativo. Tuttavia, se la connessione è stata aperta utilizzando una risorsa URIMAP che specificava il pooling delle connessioni e né il server né il programma applicativo hanno fatto richiesta di chiudere la connessione, CICS non chiude la connessione. Invece, CICS verifica che la connessione sia in buono stato e la inserisce in un pool di connessioni inattive. Le connessioni in pool rimangono aperte e possono essere riutilizzate da un altro programma applicativo o da un'altra istanza dello stesso programma applicativo per connettersi allo stesso server.
Procedura
- Mentre si utilizza la connessione, se si desidera verificare se il server ha richiesto la chiusura della connessione, utilizzare il comando WEB READ HTTPHEADER per cercare l'intestazione Connection: close nell'ultimo messaggio del server.
Se il server chiude la connessione, il programma applicativo non può inviare altre richieste utilizzando quella connessione, ma può ricevere le risposte che il server ha inviato prima di chiudere la connessione.
- Facoltativo: se non si utilizza il pooling delle connessioni, all'ultima richiesta che si desidera effettuare al server, specificare CLOSE per l'opzione CLOSESTATUS sul comando WEB SEND (Client) o WEB CONVERSE.
CICS scrive un'intestazione Connection: close sulla richiesta o, per un server a livello HTTP/1.0, omette l'intestazione Connection: Keep-Alive. Se si specifica questa opzione, il server può chiudere la connessione subito dopo l'invio della risposta finale, anziché attendere altre richieste prima del timing out. L'opzione CLOSESTATUS non ha gli stessi effetti del comando WEB CLOSE.
Nota: se si utilizza il pooling delle connessioni, non specificare CLOSE per l'opzione CLOSESTATUS. Specificando CLOSESTATUS(CLOSE), il server chiude la connessione e quindi non può essere inserita in un pool.
- Quando tutte le richieste e le risposte HTTP sono state completate, emettere un comando WEB CLOSE, specificando il token di sessione.
L'emissione del comando WEB CLOSE notifica a CICS che il programma applicativo ha terminato di utilizzare la connessione. Quando si emette il comando, il token di sessione che si applica a questo uso della connessione non è più valido per l'uso. Il token di sessione è necessario per ricevere una risposta dal server e per leggere le intestazioni HTTP della risposta, quindi non emettete il comando WEB CLOSE prima di aver completato tutte le interazioni con il server e con l'ultima risposta inviata.
- Se la connessione è ancora aperta quando si emette il comando WEB CLOSE ed è stata aperta utilizzando una risorsa URIMAP che ha specificato il pooling delle connessioni, CICS non chiude la connessione. CICS controlla lo stato della connessione e la inserisce in un pool per riutilizzarla.
- Se la connessione non è adatta al pooling delle connessioni quando si emette il comando WEB CLOSE, perché il server o il programma applicativo ha precedentemente richiesto la chiusura della connessione, oppure non è stata aperta utilizzando una risorsa URIMAP adatta, oppure non è in uno stato buono, CICS chiude la connessione e non la inserisce in un pool.
- Se non si emette il comando WEB CLOSE, CICS chiude la connessione al termine dell'attività. La connessione chiusa non può essere inserita in un pool. Per abilitare il pooling delle connessioni, l'applicazione deve emettere il comando WEB CLOSE.