< Précédent | Suivant >

Leçon 4 : Création d'un servlet qui accède à un service OSGi

Dans cette leçon, vous créez un bundle compatibles Web pour contenir un servlet qui accède au service de compteur et affiche les résultats du service. Le servlet accède au service OSGi en recherchant le service à l'aide d'un InitialContext JNDI.

Création d'un bundle compatible Web

Pour créer le bundle compatible Web qui contient le servlet :
  1. Cliquez sur Fichier > Nouveau > Autre, puis développez OSGi.
  2. Cliquez sur Projet de bundle OSGi, puis sur Suivant. Le Nouveau projet de bundle OSGi s'ouvre.
  3. Dans la zone Nom du projet, entrez CounterWebBundle.
  4. Sélectionnez l'un des serveurs suivants dans la liste d'exécution Cible :
    • WebSphere Application Server v7.0
    • WebSphere Application Server v8.0
    • WebSphere Application Server v8.5
    • WebSphere Application Server V8.5 - Profil Liberty
  5. Dans la section Configuration, cliquez sur Ajouter le support Web et sélectionnez Web 2.5 dans la liste de support Web.
  6. Vérifiez que CounterApp s'affiche dans la zone du projet Projet d'application, puis cliquez sur Terminer.

Création d'un servlet

Pour créer le servlet accédant au service de compteur :
  1. Dans l'Explorateur d'entreprise, cliquez avec le bouton droit sur CounterWebBundle, puis sélectionnez Nouveau > Servlet. L'assistant de création de servlet s'ouvre.
  2. Dans la zone Java package, tapez com.ibm.ws.eba.servlet.
  3. Dans la zone Nom de classe, tapez CounterServlet, puis cliquez sur Terminer. Le servlet est créé dans le bundle et il s'ouvre dans l'éditeur.

Ajout des packages requis au manifeste de bundle

Pour ajouter les packages requis au manifeste du bundle :
  1. Cliquez deux fois sur Manifest: CounterWebBundle pour l'ouvrir dans l'éditeur.
  2. Passez à l'onglet Dépendances.
  3. Dans la section Packages importés, cliquez sur Ajouter. La boîte de dialogue Sélection de packages s'ouvre.
  4. Dans la zone Packages exportés, tapez com.ibm.ws.eba.counter.
  5. Sélectionnez com.ibm.ws.eba.counter dans la liste et cliquez sur OK. La section Packages importés ressemble au diagramme suivant :
    Packages importés
    Note: Si votre serveur d'exécution cible est un Liberty Profile WebSphere Application Server V8.5, vous devez également importer le package javax.naming. L'importation du package javax.naming empêche une erreur ClassNotFoundException lorsque vous exécutez l'application. Les étapes suivantes expliquent comment importer le package javax.naming :
    1. Dans la section Packages importés, cliquez sur Ajouter. La boîte de dialogue Sélection de packages s'ouvre.
    2. Dans la zone Packages exportés, tapez javax.naming.
    3. Sélectionnez javax.naming dans la liste, puis cliquez sur OK.
    Si vous n'importez pas le package, une erreur ClassNotFoundException survient lorsque vous exécutez l'application sur WebSphere Application Server avec un Liberty Profile. L'erreur se produit car l'application attend que le package avec la classe manquante soit fourni par le serveur d'exécution plutôt que le package utilisateur.
  6. Sauvegarder le fichier manifeste du bundle.

Création de l'implémentation pour rechercher un service OSGi

Les étapes suivantes décrivent comment créer l'implémentation pour la méthode doGet(), qui recherche un service OSGi via InitialContext :
  1. Dans l'Explorateur d'entreprise, cliquez deux fois sur CounterServlet.java pour l'ouvrir dans l'éditeur.
  2. Recherchez la méthode doGet() et ajoutez l'implémentation suivante :
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		Counter counter;
    		try {
    			InitialContext ic =  new InitialContext();
    			counter = (Counter) ic.lookup("osgi:service/"+Counter.class.getName());
    			response.getOutputStream().println("counter="+counter.getCount());
    		}
    		catch (NamingException e) {
    			e.printStackTrace(System.out);
    		}
    	}
  3. Dans le menu principal, cliquez sur Source > Organisation des importations. La boîte de dialogue Organisation des importations s'ouvre.
  4. Sélectionnez com.ibm.ws.eba.counter.Counter, puis cliquez sur Terminer.
  5. Sauvegardez CounterServlet.java.
Le code de servlet ressemble au code suivant :
package com.ibm.ws.eba.servlet;

import java.io.IOException;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.ibm.ws.eba.counter.Counter;

/**
 * Servlet implementation class CounterServlet
 */
public class CounterServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * Default constructor. 
     */
    public CounterServlet() {
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Counter counter;
		try {
			InitialContext ic =  new InitialContext();
			counter = (Counter) ic.lookup("osgi:service/"+Counter.class.getName());
			response.getOutputStream().println("counter="+counter.getCount());
		}
		catch (NamingException e) {
			e.printStackTrace(System.out);
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

}

Point de contrôle

Vous avez créé le qui accède au service OSGi en recherchant le service à l'aide d'un InitialContext JNDI.

Dans cette leçon, vous avez découvert les rubriques suivantes :
  • Comment créer un bundle OSGi compatible Web.
  • Comment créer un servlet.
  • Comment importer les dépendances de bundle à l'aide des Packages importés.
  • Comment rechercher un service OSGi en utilisant InitialContext.
< Précédent | Suivant >
Icône indiquant le type de rubrique Rubrique de leçon de tutoriel
Dispositions pour les centres de documentation | Commentaires en retour

Icône d'horodatage Dernière mise à jour: May 29, 2014 10:11

Nom de fichier : counter_lesson4.html