Importazione da WSDL: restrizioni e oggetti creati

In questa sezione vengono descritti gli oggetti creati quando viene importata una definizione WSDL e alcune restrizioni.

Oggetti creati

File copiati mediante importazione dalla riga comandi
Il comando mqsicreatemsgdefsfromwsdl copia i file WSDL necessari nell'area di lavoro prima di eseguire l'importazione. Si tratta del file WSDL principale e di qualsiasi importazione risolta mediante una posizione relativa. I file sono copiati nella serie di messaggi specificata in una cartella denominata importFiles.
File di prospetto
Il programma di importazione WSDL accoda il risultato dell'operazione di importazione in un file di prospetto, in cui saranno elencati eventuali errori. Il nome del file di prospetto è <serie messaggi>.wsdl.report.txt.
Definizioni del messaggio SOAP
I mxsd SOAP richiesti sono aggiunti alla serie di messaggi. Le definizioni SOAP 1.1 sono sempre importate correntemente. Esistono numerose ragioni per tale situazione.
  • SOAP 1.1 è utilizzato più di SOAP 1.2.
  • Non esiste un'associazione SOAP 1.2 standard per WSDL 1.1. Ciò significa che il programma di importazione WSDL non è affidabile per determinare se è richiesto SOAP 1.2.
  • Non è possibile importare definizioni SOAP 1.1 e SOAP 1.2 poiché utilizzano lo stesso nome del messaggio (ad esempio, Envelope).

Se è necessario analizzare documenti di istanza SOAP 1.2, rimuovere in modo manuale le definizioni di SOAP 1.1 e importare le definizioni di SOAP 1.2 mediante la procedura guidata File di definizione dei messaggi selezionando Messaggio fornito da IBM.

Se la serie di messaggi dispone di livelli TDS o CWF, l'importazione delle definizioni SOAP genera numerosi messaggi di avvertenza. Ignorarne la maggior parte e considerare i valori consentiti per gli attributi booleani. In SOAP 1.1 i valori booleani sono 1 o 0, mentre in SOAP 1.2 i valori sono true e false. La rappresentazione XML dei valori booleani per una serie di messaggi è specificata nelle proprietà fisiche per il formato fisico XML, che ne condizionano l'impostazione.

File di definizione dei messaggi
Altri nomi di file di definizione dei messaggi sono creati come <nome file di input>.mxsd e il relativo contenuto dipende dallo stile WSDL.
Stile documento
Le parti del messaggio WSDL in cui lo stile è "documento" (che comprende tutte le parti headerfault, fault e di intestazione SOAP) fanno riferimento a un elemento definito nello schema XML. Tale elemento è importato come elemento globale e messaggio del broker nel mxsd.

La politica di output xsi:type nel messaggio è impostata su "Mai".

Stile rpc
Le parti del messaggio WSDL per style="rpc" (e in modo esclusivo quelle assegnate al contenuto SOAP) fanno riferimento a un tipo definito nello schema XML. Di seguito sono riportati i messaggi di input e output creati in tal caso.
  Messaggio di input Messaggio di output
Derivato da Child wsdl:input (se presente) dell'operazione WSDL e parti e messaggio WSDL identificati Child wsdl:output (se presente) dell'operazione WSDL e parti e messaggio WSDL identificati
Nome dell'elemento Valore dell'attributo nome nell'elemento dell'operazione WSDL Valore dell'attributo nome nell'elemento dell'operazione WSDL in cui è presente il suffisso "Risposta"
Spazio dei nomi dell'elemento Valore dell'attributo spazio dei nomi nell'elemento soap:body corrispondente Valore dell'attributo spazio dei nomi nell'elemento soap:body corrispondente

Ciascun messaggio è di tipo complesso locale poiché si tratta di una sequenza di elementi. Il nome di ciascun elemento è il valore dell'attributo nome nelle parti WSDL del messaggio identificate rispettivamente dall'elemento di input o output. Tali elementi non sono dotati di spazi dei nomi (la rappresentazione di schema è form="unqualified") e si trovano in ambito locale per evitare conflitti di nome. Il tipo di tali elementi locali è il tipo di schema XML a cui fa riferimento l'attributo tipo dell'elemento della parte corrispondente. Il tipo è globale nello schema WSDL.

Se nella definizione WSDL soap:body è definito use="encoded", la definizione del messaggio include un riferimento al gruppo di attributi encodingStyle nello spazio dei nomi SOAP-ENV e la politica di output xsi:type nel messaggio è impostata su "Segui regole di codifica SOAP". In caso contrario, la politica di output xsi:type nel messaggio è impostata su "Mai".

Restrizioni

Di seguito sono descritte alcune restrizioni correlate all'importazione delle definizioni WSDL. Queste si verificano quando le definizioni WSDL non sono compatibili con WS-I.
Array SOAP
Mediante una definizione WSDL 1.1 è possibile definire un array SOAP (applicabile solo allo stile WSDL codificato rpc e non compatibile con WS-I):
    <xsd:complexType name="t">
          <xsd:complexContent>
            <xsd:restriction base="SOAP-ENC:Array">
              <xsd:sequence>
                <xsd:element name="item" type="string" maxOccurs="unbounded"/>
              </xsd:sequence>
              <xsd:attribute  ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[]"/>
            </xsd:restriction>
          </xsd:complexContent>
    </xsd:complexType>

Alcuni utilizzi della sintassi di array SOAP non sono supportati in modo completo. Sebbene in fase di analisi venga creata una struttura utile (da serializzare in fase di scrittura), si verificano le condizioni riportate di seguito.

  • Il modello non considera l'attributo SOAP-ENC:arrayType.
  • Il modello per array trasmessi in modo parziale non considerano l'attributo SOAP-ENC:offset.

    Ad esempio, in ESQL l'accesso al primo elemento di un array specificato con offset[2] non viene effettuato come InputRoot.MRM.array.item[3] ma come InputRoot.MRM.array.item[1].

  • Il modello per array multidimensionali provoca un appiattimento della rappresentazione in una dimensione singola. Ad esempio, in ESQL l'accesso a un array a due dimensioni non viene effettuato come InputRoot.MRM.array.item[x][y] ma come InputRoot.MRM.array.item[i] dove è necessario calcolare l'indice "i" in modo appropriato.
Elementi anonimi
L'estratto WSDL riportato sopra descrive un documento di istanza SOAP del formato indicato di seguito.
    <SOAP-ENC:Array SOAP-ENC:arrayType="xsd:string[3]">
       <item xsi:type="xsd:string">Una stringa di testo generale</item>
       <item xsi:type="xsd:token">Una restrizione del tipo di stringa</item>
       <item xsi:type="xsd:Name">UnarestrizionedeltipodiToken</item>
    </SOAP-ENC:Array>

Il modello del broker gestisce il formato con la modalità prevista, ma nella codifica SOAP è inoltre consentito utilizzare gli elementi tipo dallo spazio dei nomi della codifica SOAP mediante gli elementi dell'array. Ciò significa che è possibile creare un documento di istanza del formato indicato di seguito mediante un'applicazione che utilizza la stessa definizione WSDL.

    <SOAP-ENC:Array SOAP-ENC:arrayType="xsd:string[3]">
       <SOAP-ENC:string>Una stringa di testo generale</SOAP-ENC:string>
       <SOAP-ENC:token>Una restrizione del tipo di stringa</SOAP-ENC:token>
       <SOAP-ENC:Name>UnarestrizionedeltipodiToken</ SOAP-ENC:Name>
    </SOAP-ENC:Array>

Per gestire un caso del genere, è necessario modificare in modo manuale il modello di broker creato mediante l'importazione del WSDL, a meno che non sia accettabile che il programma di analisi lo consideri come un elemento a definizione automatica.

Concetti correlati
Creazione di modelli di messaggio
Il modello di messaggio
Attività correlate
Sviluppo di modelli di messaggio
Gestione di un file di definizione dei messaggi
Gestione degli oggetti del modello messaggio
Riferimenti correlati
Informazioni di riferimento del modello di messaggio
Formati di importazione
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ad30560_