La fonction de traitement des demandes du connecteur permet à une collaboration d'appeler un service HTTP. Vous devez configurer le connecteur et ses composants de traitement de la demande : la structure du gestionnaire de protocole et les gestionnaires de protocole.
Lors de l'exécution, le connecteur reçoit des demandes émanant de collaboration sous la forme d'objets métier. Les objets métier -- demandes et, le cas échéant, objets métier de réponse et d'erreur -- sont contenus par le TLO générés par une collaboration qui est configurée pour utiliser les services HTTP. Le TLO et ses objets métier enfants contiennent des attributs et des ASI indiquant le mode de traitement(synchrone ou asynchrone), le type mime du gestionnaire de données, le gestionnaire de données à utiliser ainsi que l'adresse de la cible. A l'aide de ces informations, le gestionnaire de protocole appelle une instance du gestionnaire de données, convertit l'objet métier de demande en message de demande, et appelle le service HTTP cible. Si le mode est synchrone, le gestionnaire de protocole appelle à nouveau le gestionnaire de données pour convertir le message de réponse en objet métier qu'il renvoie à la collaboration.
En réponse à un message de demande, le connecteur peut recevoir l'un des messages suivants de la part du partenaire d'échanges éloigné :
Les gestionnaires de protocole jouent un rôle clé dans le traitement des demandes.
Une collaboration peut appeler un service HTTP sur HTTP ou HTTPS. Le connecteur possède un seul gestionnaire de protocole et un canal correspondant : un gestionnaire de protocole HTTP-HTTPS pour l'appel de services HTTP et HTTPS
La structure de gestionnaire de protocole gère le gestionnaire de protocole en le chargeant lors du démarrage. Quand le connecteur reçoit un objet métier de demande, l'unité d'exécution de demande (notez que chaque demande de collaboration est accompagnée de son unité d'exécution ) appelle la structure de gestionnaire de protocole pour traiter la demande.
La structure de gestionnaire de protocole lit les informations ASI d'attribut Handler des TLO pour déterminer quel gestionnaire de protocole utiliser. Applicant une série de règles (voir HTTP-HTTPS traitement du gestionnaire de protocole), le gestionnaire de protocole appelle un gestionnaire de données pour convertir l'objet métier de demande en message de demande. Le gestionnaire de protocole intègre le message de demande dans le message du transport HTTP(S).
Le gestionnaire de protocole lit ensuite l'attribut Destination du Protocol Config MO de l'objet métier de demande pour déterminer l'adresse cible. La propriété Method de l'attribut HTTP Config MO indiquera la méthode HTTP à utiliser lors de l'exécution. La méthode par défaut est POST. Le gestionnaire de protocole appelle ensuite le service HTTP cible avec le message de demande.
Lisant les ASI de ws_mode TLO, le gestionnaire de protocole détermine si le mode de traitement est synchrone ou asynchrone. Si ces informations ASI sont réglées sur asynch, le traitement du gestionnaire de protocole est terminé. Autrement, le gestionnaire de protocole attend un message de réponse. Si un message de réponse arrive, le gestionnaire de protocole extrait les entêtes de protocole et la charge. Il appelle ensuite le gestionnaire de données (indiqué par l'attribut MimeType TLO) pour convertir le message en objet métier d'erreur ou de réponse. Toujours à l'aide de Protocol Config MO, le gestionnaire de protocole définit les entêtes de protocole dans l'objet métier. Le gestionnaire de protocole renvoie ensuite l'objet métier de réponse ou d'erreur à la collaboration.
Selon la configuration du connecteur, un ou plusieurs gestionnaires peuvent être reliés au connecteur. Les propriétés spécifiques au connecteur permettent de configurer des gestionnaires de protocole.
Le gestionnaire de protocole HTTP-HTTPS s'exécute conformément à ce qui est décrit dans Gestion de protocole et avec les exceptions indiquées dans cette section. La figure 16 représente le gestionnaire de protocole HTTP-HTTPS fonctionnant en mode synchrone.
La figure 17 représente le gestionnaire de protocole HTTP-HTTPS d'un processus de demandes asynchrones
Le gestionnaire de protocole HTTP-HTTPS utilise les ASI de niveau objet (cw_mo_http) de l'objet métier de demande pour déterminer le Protocol Config MO. Le gestionnaire de protocole HTTP-HTTPS détermine l'URL du service HTTP cible en lisant l'attribut Destination de HTTP Protocol Config MO. Si l'URL est manquante ou incomplète, le gestionnaire de protocole fait échouer l'appel du service. Pour plus d'informations sur HTTP Protocol Config MO et ses attributs, voir HTTP Protocol Config MO pour le traitement des demandes.
Le gestionnaire de protocole HTTP-HTTPS appelle le service HTTP à l'aide du message de demande renvoyé par le gestionnaire de données. Le comportement du gestionnaire de protocole est conforme aux propriétés de configuration de connecteur HTTP ayant été indiquées, le cas échéant. Le gestionnaire de protocole HTTP-HTTPS lit la réponse éventuellement reçue.
Le tableau 30 récapitule la priorité des règles qu'utilise le gestionnaire de protocole HTTP-HTTPS pour déterminer l'en-tête Charset, MimeType, ContentType et Content-Type des messages de demande sortants.
Priorité | Charset | MimeType | ContentType | Entête Content-Type |
1 | Entête Content-Type de Protocol Config MO | Propriété MimeType de l'attribut TLO | Entête Content-Type de Protocol Config MO | Entête Content-Type de Protocol Config MO |
2 | Propriété Charset de l'attribut TLO | Valeur par défaut : ContentType | En-tête Content-Type Construct utilisant ContentType et Charset | |
3 | Si le ContentType est text/*, la valeur par défaut est ISO-8859-1. Autrement, charset ne sera pas utilisé. |
Comme le montre le tableau 30 :
ContentType | Charset par défaut |
text/* | ISO-8859-1
Pour plus d'informations, voir RFC2616 |
application/* | Aucune valeur par défaut |
Tous les autres | Aucune valeur par défaut |
Le tableau 32 récapitule la priorité des règles qu'utilise le gestionnaire lors de la détermination de l'en-tête Charset, MimeType, ContentType et Content-Type des messages de réponse.
Priorité | Charset | MimeType | ContentType | Entête Content-Type |
1 | Entête Content-Type du message HTTP entrant | TransformationMap de message ou objet métier enfant EmptyResponseRule (si la réponse est vide) dans le Protocol Config MO de l'objet métier de réponse | Entête Content-Type du message HTTP entrant | Entête Content-Type du message HTTP entrant |
2 | TransformationMap de message ou objet métier enfant EmptyResponseRule (si la réponse est vide) dans le Protocol Config MO de l'objet métier de réponse | Mimetype du message de demande, uniquement si les propriétés ContentType de la demande et de la réponse sont identiques. | ||
3 | Mimetype du message de demande, uniquement si les propriétés ContentType de la demande et de la réponse sont identiques. | Propriété MimeType dans TLO | ||
4 | Propriété Charset dans TLO. | Valeur par défaut : ContentType | ||
5 | Si le Content-Type est text/*, la valeur par défaut est ISO-8859-1. Autrement, Charset ne sera pas utilisé. |
Comme le montre le tableau 32 :
Le gestionnaire traite HTTP Protocol Config MO. La collaboration doit vérifier que les valeurs d'entête transmises à HTTP Protocol Config MO sont correctes dans le contexte de l'événement demande-réponse. Le gestionnaire complète les entêtes standard et les propriétés personnalisées selon les règles suivantes :