Esecuzione dell'esempio Host servizio Web

Quando si esegue l'esempio Host servizio Web, il broker riceve un messaggio SOAP/XML sul protocollo HTTP e restituisce un messaggio SOAP/XML, utilizzando ancora HTTP. Quindi, il broker agisce come un host servizio Web.

Il broker estrae i dati da questo messaggio SOAP e genera un nuovo messaggio corrispondente al file di intestazione C. Questo messaggio viene inviato ad un'applicazione legacy tramite WebSphere MQ. L'applicazione legacy risponde e i dati ricavati da questa risposta vengono inseriti nella risposta HTTP generata dal broker. Quindi il broker ha considerato un'applicazione legacy alla stregua di un servizio Web.

Per eseguire l'esempio Host servizio Web:

  1. Distribuire il file bar WSHOST.bar al broker. Questo file è nel progetto flusso di messaggi WSHOST_MFP1.
  2. Avviare l'applicazione legacy.

    L'applicazione legacy è scritta in linguaggio C e viene avviata con due parametri di input: un nome gestore code WebSphere MQ ed un nome coda. L'applicazione legge i messaggi da questa coda e da questo gestore code ed invia risposte alla coda e al gestore code specificati nelle informazioni relative alla risposta del messaggio di input.

    Vengono fornite due versioni eseguibili dell'applicazione legacy:

    L'esempio è configurato per eseguire l'applicazione legacy utilizzando lo stesso gestore code WebSphere MQ del broker. Se il broker sta utilizzando un gestore code differente rispetto all'applicazione legacy, sarà necessario configurare i gestori code WebSphere MQ (broker e legacy) per la comunicazione reciproca.

    E' anche necessario apportare una piccola modifica a MQOutput nel nodo legacy nel flusso di messaggi WSHOST_WSHOST1. Impostare la proprietà Base Nome gestore code sul nome del gestore code dell'applicazione legacy.

    Se si vuole eseguire l'applicazione legacy su una piattaforma diversa da Windows o Linux, i file di origine vengono forniti nel progetto WSHOST_LEGACY. Il file di origine C è legacyservice.c, con i file di intestazione legacyservice.h e legacyservice2.h. Compilarli utilizzando un compilatore a propria scelta, quindi eseguire l'applicazione attenendosi alle direttive precedenti per i parametri di input.

    I messaggi sia di input che di output corrispondono alla seguente struttura C:

    typedef struct tagIA81CONF {
       char MessageId[8];
       char OrderNumber[8];
       char ItemReference[12];
       char ItemQuantity[8];
       char CustomerNumber[12];
       char DeliveryRef[8];
       char Confirm[1];
       char filler1[3];
    } IA81CONF;
    

    Questa struttura viene fornita nel file legacyservice.h del progetto WSHOST_LEGACY. Si noti che questo file di intestazione contiene anche altre strutture

  3. Inserire un messaggio SOAP nell'URL specificato nel nodo HTTPInput. Se non si dispone di un programma di utilità per compiere questa operazione, sono disponibili vari strumenti freeware.

    Tutti i messaggi di prova utilizzati nell'esecuzione di questo esempio si basano sul seguente formato:

    <?xml version="1.0" encoding="UTF-8"?>
    <soapenv:Envelope 	xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:c="http://www.brokersamplewshost.ibm.com"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <soapenv:Body>
            <c:IA81CONFIN>
                <MessageId>IA81CONF</MessageId>
                <OrderNumber>ON4002</OrderNumber>
                <ItemReference>IY4003</ItemReference>
                <ItemQuantity>4</ItemQuantity>
                <CustomerNumber>CY4004</CustomerNumber>
            </c:IA81CONFIN>
        </soapenv:Body>
    </soapenv:Envelope>

Comprensione dei risultati

L'esempio Host servizio Web richiama un'applicazione legacy con un messaggio denominato msg_tagIA81CONF. In tale messaggio, un campo denominato DeliveryRef rimane vuoto nell'input e nell'output è impostato su JOHNCORP. Inoltre, un campo denominato Confirm rimane vuoto nell'input e nell'output è impostato su Y o N, a seconda che il campo di input ItemReference contenga o meno il carattere Y.

Se si sta utilizzando Nettool, il pannello sulla destra contiene la risposta HTTP.

Il messaggio di risposta che deriva dal messaggio di input riportato sopra è il seguente:

<?xml version="1.0"?>
<tns:Envelope xmlns:tns="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:NS1="http://www.brokersamplewshost.ibm.com"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <tns:Body>
        <NS1:IA81CONFOUT>
            <MessageId>IA81CONF</MessageId>
            <OrderNumber>ON4002</OrderNumber>
            <ItemReference>IY4003</ItemReference>
            <ItemQuantity>4</ItemQuantity>
            <CustomerNumber>CY4004</CustomerNumber>
            <DeliveryRef>JOHNCORP</DeliveryRef>
            <Confirm>Y</Confirm>
        </NS1:IA81CONFOUT>
    </tns:Body>
</tns:Envelope>

icona Pagina principale   Torna alla pagina home dell'esempio