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


Appel dynamique d'un composant

Lorsqu'un module appelle un composant qui a une interface de type de port WSDL (Web Service Descriptor Language), il doit appeler le composant de façon dynamique à l'aide de la méthode invoke().

Avant de commencer

Cette tâche suppose qu'un composant appelant appelle un composant de façon dynamique.

Pourquoi et quand exécuter cette tâche

Avec une interface de type de port WSDL, un composant appelant doit utiliser la méthode invoke() pour appeler le composant. Un composant appelant peut également appeler un composant ayant une interface Java™ de cette façon.
Procédure
  1. Déterminez le module qui contient le composant nécessaire.
  2. Déterminez le tableau dont le composant a besoin.
    Le tableau d'entrée peut être de l'un des trois types suivants :
    • Des types Java haut de casse primitifs ou des tableaux de ce type
    • Des classes Java ordinaires ou des tableaux de ces classes
    • Service Data Objects (SDO)
  3. Définissez un tableau pour contenir la réponse du composant.

    Le tableau de réponse peut être des mêmes types que le tableau d'entrée.

  4. Utilisez la méthode invoke() pour appeler le composant nécessaire et transférer l'objet tableau vers le composant.
  5. Traitez le résultat.

Exemples d'appel dynamique d'un composant

Dans l'exemple suivant, un module utilise la méthode invoke() pour appeler un composant qui utilise des types de données Java haut de casse primitives.
Service service = (Service)serviceManager.locateService("multiParamInf");
		
		Reference reference = service.getReference();

		OperationType methodMultiType = 
				reference.getOperationType("methodWithMultiParameter");

		Type t = methodMultiType.getInputType();

		BOFactory boFactory = (BOFactory)serviceManager.locateService
				("com/ibm/websphere/bo/BOFactory");

		DataObject paramObject = boFactory.createbyType(t);

		paramObject.set(0,"input1")
		paramObject.set(1,"input2")
		paramObject.set(2,"input3")

		service.invoke("methodMultiParamater",paramObject);

L'exemple suivant utilise la méthode d'appel via une interface de port WSDL configurée en tant que cible.

Service serviceOne = (Service)serviceManager.locateService("multiParamInfWSDL");
	
	DataObject dob = factory.create("http://MultiCallWSServerOne/bos", "SameBO");
			dob.setString("attribute1", stringArg);

	DataObject wrapBo = factory.createByElement
		("http://MultiCallWSServerOne/wsdl/ServerOneInf", "methodOne");
			wrapBo.set("input1", dob); //wrapBo encapsule tous les paramètres de methodOne
			wrapBo.set("input2", "XXXX");
			wrapBo.set("input3", "yyyy");

	DataObject resBo= (DataObject)serviceOne.invoke("methodOne", wrapBo);

task Rubrique relative à une tâche

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/tdev_dynamicinvokcomp.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).