WebSphere Enterprise Service Bus, Version 6.2.0 Systèmes d'exploitation: AIX, HP-UX, i5/OS, Linux, Solaris, Windows


Liaisons de données HTTP

Pour chaque mappage de données distinct entre un message SCA (Service Component Architecture) et un message de protocole HTTP, un gestionnaire de données ou une liaison de données HTTP doit être configuré. Les gestionnaires de données, qui fournissent une interface indépendante des liaisons pouvant être réutilisée avec différentes liaisons de transport, représentent l'approche recommandée ; les liaisons de données sont spécifiques à une liaison de transport particulière. Trois classes de liaisons de données propres à HTTP sont fournies ; vous pouvez également créer des liaisons ou des gestionnaires de données personnalisés.

Les trois liaisons de données suivantes sont disponibles pour les importations et les exportations HTTP : liaison de données binaire, liaison de données XML et liaison de données SOAP. Une liaison de données de réponse n'est pas nécessaire pour les opérations unidirectionnelles. Une liaison de données est représentée par le nom d'une classe Java™ dont les instances permettent à la fois les conversions de HTTP vers ServiceDataObject et vice versa. Un sélecteur de fonction doit être utilisé lors d'une exportation pour déterminer, conjointement avec les liaisons de méthodes, la liaison de données utilisée et l'opération appelée. Les liaisons de données fournies sont les suivantes :

Implémentation des liaisons de données HTTP personnalisées

Cette section indique comment implémenter une liaison de données HTTP personnalisée.
Remarque : L'approche recommandée consiste à implémenter un gestionnaire de données personnalisé car il peut être réutilisé avec différentes liaisons de transport.

HTTPStreamDataBinding est la principale interface de gestion des messages HTTP personnalisés. Cette interface est conçue pour permettre le traitement de charges utiles importantes. Toutefois, pour que ce type d'implémentation fonctionne, cette liaison de données doit renvoyer les informations de contrôle et les en-têtes avant que le message ne soit inséré dans le flux.

Les méthodes et leur ordre d'exécution (indiqué ci-dessous) doivent être implémentés par la liaison de données personnalisée.

Pour personnaliser une liaison de données, créez une classe implémentant HTTPStreamDataBinding. La liaison de données doit comporter les quatre propriétés privées suivantes :
  • private DataObject pDataObject
  • private HTTPControl pCtrl
  • private HTTPHeaders pHeaders
  • private yourNativeDataType nativeData
La liaison HTTP appellera la liaison de données personnalisée dans l'ordre suivant :
  • Traitement sortant (objet de données vers format natif) :
    1. setDataObject(...)
    2. setHeaders(...)
    3. setControlParameters(...)
    4. setBusinessException(...)
    5. convertToNativeData()
    6. getControlParameters()
    7. getHeaders()
    8. write(...)
  • Traitement entrant (format natif vers objet de données) :
    1. setControlParameters(...)
    2. setHeaders(...)
    3. convertFromNativeData(...)
    4. isBusinessException()
    5. getDataObject()
    6. getControlParameters()
    7. getHeaders()

Vous devez appeler setDataObject(...) dans convertFromNativeData(...) pour définir la valeur de dataObject, qui est convertie du format de données natif en propriété privée "pDataObject".

public void setDataObject(DataObject dataObject)
			throws DataBindingException {
		pDataObject = dataObject;

}
public void setControlParameters(HTTPControl arg0) {
		this.pCtrl = arg0;
}

public void setHeaders(HTTPHeaders arg0) {
		this.pHeaders = arg0;
}
/*
* Ajouter l'en-tête http "IsBusinessException" dans pHeaders.
* Deux étapes :
* 1. Supprimer d'abord tous les en-têtes portant le nom IsBusinessException (insensible à la casse). 
*   Cette opération garantit qu'un seul en-tête est présent.
* 2. Ajouter le nouvel en-tête "IsBusinessException"
*/
public void setBusinessException(boolean isBusinessException) {
		//Supprimer d'abord tous les en-têtes portant le nom IsBusinessException (insensible à la casse). 
		//Cette opération garantit qu'un seul en-tête est présent.
		//Ajouter le nouvel en-tête "IsBusinessException", exemple de code :
		HTTPHeader header=HeadersFactory.eINSTANCE.createHTTPHeader();
		header.setName("IsBusinessException");
		header.setValue(Boolean.toString(isBusinessException));
		this.pHeaders.getHeader().add(header);
		
}
public HTTPControl getControlParameters() {
		return pCtrl;
}
public HTTPHeaders getHeaders() {
		return pHeaders;
}
public DataObject getDataObject() throws DataBindingException {
		return pDataObject;
}
/*
* Extraire l'en-tête "IsBusinessException" de pHeaders, renvoyer sa valeur booléenne
*/
public boolean isBusinessException() {
		String headerValue = getHeaderValue(pHeaders,"IsBusinessException");
		boolean result=Boolean.parseBoolean(headerValue);
		return result;
}
public void convertToNativeData() throws DataBindingException {
		DataObject dataObject = getDataObject();
		this.nativeData=realConvertWorkFromSDOToNativeData(dataObject);
}
public void convertFromNativeData(HTTPInputStream arg0){
		//Lire les données de HTTPInpurtStream
		//Les convertir en objet de données (DataObject)
		DataObject dataobject=realConvertWorkFromNativeDataToSDO(arg0);
		setDataObject(dataobject);
}
public void write(HTTPOutputStream output) throws IOException {
		if (nativeData != null)
		output.write(nativeData);
}

concept Rubrique concept

Conditions d'utilisation | Commentaires en retour


Icône d'horodatage Dernière mise à jour: 07 juillet 2010


http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/topic//com.ibm.websphere.wesb620.doc/doc/cadm_httpdatabindings.html
Copyright IBM Corporation 2005, 2010. All Rights Reserved.
Ce centre d'information est mis en service par la technologie Eclipse (http://www.eclipse.org).