DissertationsEnLigne.com - Dissertations gratuites, mémoires, discours et notes de recherche
Recherche

J2Ee Cours Pour Les Null

Dissertation : J2Ee Cours Pour Les Null. Rechercher de 53 000+ Dissertation Gratuites et Mémoires
Page 1 sur 7

de messaging

n

Domaines possibles

n Publish/Subscribe (pub/sub) : n

producteurs, n consommateurs (t v) n Point To Point (PTP) : n producteurs, 1 consommateur

JMS : les étapes

1.

Localiser le driver JMS

n

lookup JNDI. Le driver est une connection factory obtenir une connection à partir de la connection factory Il s'agit d'un objet qui va servir à recevoir et envoyer des messages. On l'obtient à partir de la connection. Il s'agit du canal, de la chaîne télé ! Normalement, c'est réglé par le déployeur. On obtient la destination via JNDI. Utilis és pour écrire ou lire un message. On les obtient à partir de la destination ou de la session.

2.

Créer une connection JMS

n

3.

Créer une session JMS

n

4.

Localiser la destination JMS

n

5.

Créer un producteur ou un consommateur JMS

n

6.

Envoyer ou recevoir un message

4

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

JMS : les étapes

JMS : les interfaces

5

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

JMS : exemple de code (1)

import javax.naming.*;

import javax.jms .*; import java.util.*;

public class Client { public static void main (String[] args) throws Exception { // Initialize JNDI Context ctx = new InitialContext(System.getProperties());

// 1: Lookup ConnectionFactory via JNDI TopicConnectionFactory factory = (TopicConnectionFactory) ctx.lookup("javax.jms.TopicConnectionFactory ");

// 2: Use ConnectionFactory to create JMS connection TopicConnection connection = factory.createTopicConnection();

JMS : exemple de code (2)

// 3: Use Connection to create session TopicSession session = connection.createTopicSession( false, Session.AUTO_ACKNOWLEDGE);

// 4: Lookup Destination (topic) via JNDI Topic topic = (Topic) ctx.lookup("testtopic");

// 5: Create a Message Producer TopicPublisher publisher = session.createPublisher(topic );

// 6: Create a text message, and publish it TextMessage msg = session.createTextMessage(); msg.setText("This is a test message."); publisher.publish(msg); } }

6

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

Intégrer JMS et les EJB

n n

Pourquoi créer un nouveau type d'EJB ? Pourquoi ne pas avoir délégué le travail à un objet spécialisé ? Pourquoi ne pas avoir augmenté les caractéristiques des session beans ? Parce que ainsi on peut bénéficier de tous les avantages déjà rencontrés : cycle de vie, pooling, descripteurs spécialisés, code simple…

n

n

Qu'est-ce qu'un Message-Driven Bean ?

n

Un EJB qui peut recevoir des messages

n

Il consomme des messages depuis les queues ou topics, envoyés par les clients JMS

7

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

Qu'est-ce qu'un Message-Driven Bean ?

n n n

Un client n'accède pas à un MDB via une interface, il utilise l'API JMS, Un MDB n'a pas d'interface Home, Local Home, Remote ou Local, Les MDB possèdent une seule méthode, faiblement typée : onMessage()

n Elle accepte un message JMS (BytesMessage,

ObjectMessage, TextMessage, StreamMessage ou MapMessage) n Pas de vérification de types à la compilation. n Utiliser instanceof au run-time pour connaître le type du message. n

Les MDB n'ont pas de valeur de retour

n Ils sont découplés des producteurs de messages.

Qu'est-ce qu'un Message-Driven Bean ?

n n n n

Pour envoyer une réponse à l'expéditeur : plusieurs design patterns… Les MDB ne renvoient pas d'exceptions au client (mais au container), Les MDB sont stateless… Les MDB peuvent être des abonnés durables ou nondurables (durable or nondurable subscribers) à un topic

n Durable = reçoit tous les messages, même si l'abonné est

inactif, n Dans ce cas, le message est rendu persistant et sera délivré lorsque l'abonné sera de nouveau actif. n Nondurable = messages perdus lorsque abonné inactif.

8

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

Qu'est-ce qu'un Message-Driven Bean ?

n

Le consommateur (celui qui peut les d étruire) des messages est en général le Container

n

C'est lui qui choisit d'être durable ou non-durable , n S'il est durable, les messages résistent au crash du serveur d'application.

Développer un Message-Driven Bean

n

Les MDBs doivent implémenter

public void onMessage(Message message);

public interface javax.jms.MessageListener {

} public interface javax.ejb.MessageDrivenBean extends EnterpriseBean {

public void ejbRemove() throws EJBException ;

public void setMessageDrivenContext(MessageDrivenContext ctx) throws EJBException ; }

n

La classe d'implémentation doit fournir une méthode ejbCreate() qui renvoit void et qui n'a pas d'arguments.

9

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

Développer un Message-Driven Bean

n

Méthodes qui doivent être implémentées

n onMessage(Message) n Invoquée à chaque consommation de message n Un message par instance de MBD, pooling assuré par le

container

n ejbCreate() n Récupèrer les références aux ressources, initialiser des

attributs…

n ejbRemove() n Libérer les ressources… n setMessageDrivenContext(MessageDrivenContext) n Appelée avant ejbCreate, sert à récupèrer le contexte. n Ne contient que des méthodes liées aux transactions…

Développer un Message-Driven Bean

10

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

Un exemple simple

n

Un MDB qui fait du logging, c'est à dire affiche des messages de textes à l'écran chaque fois qu'il consomme un message.

n

Utile pour débugger….

n

Rappel : pas d'interfaces !

La classe du bean

package

...

Télécharger au format  txt (13.2 Kb)   pdf (126.7 Kb)   docx (13.7 Kb)  
Voir 6 pages de plus »
Uniquement disponible sur DissertationsEnLigne.com