Librairie cliente pour Petals ESB

Avoir un Bus de services basé sur la spécification JBI c’est bien. Pouvoir le manager avec l’API JMX qui est définie dans le spécification c’est aussi pas mal, mais pouvoir le manager un utilisant des protocoles un peu plus ‘Internet-friendly’ et avec une librairie Java c’est encore mieux. Dans cet article, je vais présenter rapidement comment utiliser la librairie cliente qui est disponible depuis que Petals ESB fournit une API Web service ie depuis la version 3.0.

Le cas d’usage

Petals ESB est pleinement basé sur JBI est ne fournit pas forcément une API permettant d’exposer des services simplement. On pourrait imaginer avoir une API de management du style ‘bind(wsdlURI)’ où wsdlURI est l’URI du WSDL du service à lier au bus. La distribution de base ne fournissant pas ce genre d’API, il faut contourner cette lacune par l’utilisation de JBI et des APIs de management à distance.

La pratique et le code

Je passe sur la génération de Service Units et de Service Assemblies (des articles sont disponibles sur mon blog pur le faire avec des librairies Java ou avec le Petals Studio). Imaginons que nous ayons généré tout les artifacts JBI nécessaires coté client et que tous les composants JBI sont déjà installés sur le Bus. Comment soumettre ma SA au bus, et comment gérer son cycle de vie à distance?


package net.chamerling.blog.petalsclient;

import java.io.File;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;

import org.ow2.petals.kernel.ws.api.DeploymentService;
import org.ow2.petals.kernel.ws.api.PEtALSWebServiceException;
import org.ow2.petals.kernel.ws.api.to.AttachmentDescriptor;
import org.ow2.petals.kernel.ws.client.PetalsClient;
import org.ow2.petals.kernel.ws.client.PetalsClientFactory;

/**
 * Sample which is using the petals-kernel-wsclient library
 *
 * @author chamerling
 *
 */
public class App {

	public static void main(String[] args) {

		try {
			// get a client
			PetalsClient client = PetalsClientFactory.getInstance().getClient(
					"http://localhost:7600/petals/ws", 20000);

			// 'upload' the SA in the artifact repository
			File saFile = new File("sa.zip");
			AttachmentDescriptor ds = new AttachmentDescriptor();
			ds.setAttachment(new DataHandler(new FileDataSource(saFile)));
			client.getArtifactRepositoryService().addArtifact(ds);

			// Deploy the SA and start it
			String saId = "my-sa-id";
			DeploymentService dClient = client.getDeploymentService();
			dClient.deploy(saId);
			dClient.start(saId);

		} catch (PEtALSWebServiceException e) {
			e.printStackTrace();
		}
	}
}

Tout est dans le code :

  1. La SA est déposée dans le répertoire géré par le service d’artifact (par défaut, sous PETALS_HOME/artifacts/)
  2. La SA est déployée depuis le répertoire cité en 1
  3. La SA est démarrée.

Le code de l’exemple est disponible dans mon projet googlecode sous http://code.google.com/p/chamerling/source/browse/trunk/blog/petals-ws-client

2 réflexions sur “Librairie cliente pour Petals ESB

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s