Messaggi unidirezionali in modalità gateway

Quando si configura un nodo SOAP utilizzando WSDL, il WSDL specifica se una determinata operazione del nodo è unidirezionale o meno. Tuttavia, la configurazione di un nodo in modalità Gateway senza WSDL significa che queste informazioni WSDL non sono disponibili. Pertanto, i nodi SOAP configurati come gateway tentano automaticamente di rilevare operazioni unidirezionali in base al contenuto del messaggio.

Rilevamento operazione a una via del nodo SOAPInput

Il nodo SOAPInput rileva i messaggi unidirezionali in modi diversi a seconda del trasporto utilizzato e se WS - Addressing è configurato o meno sul nodo.

  • Se il nodo utilizza il trasporto HTTP e ha configurato WS-Addressing, l'operazione è determinata come unidirezionale se il messaggio in entrata utilizza l'indirizzo speciale WSA:None per l'elemento WSA:ReplyTo e WSA:FaultTo per gli indirizzi.
  • Se il nodo utilizza il trasporto HTTP e non ha configurato WS-Addressing, non avviene il rilevamento automatico dei messaggi unidirezionali.
  • Se il nodo utilizza il trasporto JMS e dispone di WS - Addressing configurato, l'operazione viene determinata come unidirezionale se si verifica una delle seguenti condizioni:
    • Il messaggio in entrata utilizza lo speciale WSA: Nessuno indirizzo ( http://www.w3.org/2005/08/addressing/none) per il WSA:ReplyTo E WSA:FaultTo indirizzi.
    • Non esiste JMS ReplyTo destinazione specificata nel messaggio in entrata e il messaggio in entrata utilizza lo speciale WSA: Anonimo indirizzo ( http://www.w3.org/2005/08/addressing/anonymous O http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous) per il WSA:ReplyTo E WSA:FaultTo indirizzi.
  • Se il nodo utilizza il trasporto JMS e non dispone di WS - Addressing configurato, l'operazione viene determinata come unidirezionale se nel messaggio in entrata non è specificata alcuna destinazione ReplyTo JMS.
In modalità gateway, il SOAP SOAP.Context.operationType è impostato su GATEWAY se l'operazione è determinata come richiesta - risposta oppure su GATEWAY_ONE_WAY se l'operazione è determinata come unidirezionale. Se l'operazione è determinata come unidirezionale, non è necessaria o consentita alcuna risposta. Tuttavia, se l'operazione non viene determinata come unidirezionale, il flusso viene configurato con il presupposto che il flusso invii una risposta. Pertanto, se l'operazione è unidirezionale, è necessario specificare che l'operazione è unidirezionale per consentire al flusso di liberare risorse e, se si utilizza HTTP, per inviare un riscontro HTTP 202 al client di origine. Eseguire questa operazione impostando il campo seguente nell'ambiente locale prima di collegare il messaggio a un nodo SOAPReply :
SET OutputLocalEnvironment.Destination.SOAP.Reply.Gateway.OneWay = 'true';

Questa impostazione indica al nodo SOAPReply di completare lo schema di scambio di messaggi prima di inviare un riconoscimento HTTP 202, se necessario, e di liberare le proprie risorse.

Un approccio per utilizzare questa impostazione potrebbe essere in un flusso Gateway come questo:

Flusso facciata

In questo flusso, il nodo Compute determina se il messaggio è unidirezionale. Se il messaggio è unidirezionale, il nodo Compute imposta l'impostazione unidirezionale dell'ambiente locale e invia un messaggio al nodo SOAPReply per completare il modello di scambio messaggi. Se il flusso è un flusso Gateway e l'opzione di ambiente locale unidirezionale è impostata, qualsiasi messaggio ricevuto dal nodo SOAPReply fa sì che ignori il contenuto del messaggio e completi il modello di scambio messaggi. Il flusso può quindi continuare attraverso l'altro terminale del nodo Compute .

Non è un errore inviare un messaggio al nodo SOAPReply con l'opzione dell'ambiente locale unidirezionale impostata se il messaggio è stato automaticamente determinato come un messaggio unidirezionale.

Rilevamento operazione unidirezionale del nodo SOAPRequest

Nella modalità Gateway, il file Richiesta SOAP il nodo rileva automaticamente se un messaggio è unidirezionale solo se viene utilizzato WSA e il file WSA:ReplyTo E WSA:FaultTo gli indirizzi sono impostati su speciali WSA: Nessuno indirizzo. Per indicare manualmente al nodo che il messaggio è unidirezionale, impostare la seguente opzione nell'ambiente locale:
SET OutputLocalEnvironment.Destination.SOAP.Request.Gateway.OneWay = 'true';

Per il nodo SOAPRequest, specificare che un messaggio è unidirezionale indica al nodo che non ci si aspetta una risposta, ad eccezione di un riscontro HTTP 202 se viene utilizzato il trasporto HTTP. Se viene utilizzato il trasporto JMS, consente anche l'invio del messaggio sotto il controllo di qualsiasi transazione esistente, se la Modalità transazione è impostata su o Automatico.