Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité régulier
    Inscrit en
    décembre 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 28
    Points : 9
    Points
    9

    Par défaut Appeler des beans à distance avec EJB3 et JBoss

    Salut.
    Je suis debuttant avec JAVA et EJB3 et JBoss donc votre aide me sera vraiment précieux

    J'ai sur mon poste serveur des beans session dont j'ai instalé JBoss.
    Sur le poste client je développe la classe principale qui va appelé a distance ses différente beans X,Y Z,...
    Un des attributs de la classe principale est de type X (beans qui se situe sur le serveur)
    Comment peut on déclarer cette classe?
    Je sais que pour appeler un beans a distance avec EJB3 il faut passer par lookup et mettre:

    Code :
    1
    2
    3
    Context context = new InitialContext();
    X  Interface= 
    (X) context.lookup("X1/remote");
    et mettre avant la declaration des beans @Remote

    J'ai en faite 3 question qui me preoccupe:

    1)Es-que je doit faire des appels RMI?Si oui a quoi sert EJB3 alors?
    2)Si j'appelle un beans et tout va bien mais que ce dernier a besoins lui aussi d'apelé d'autre beans,comment fait il?
    3)Y a il d'autre chose a savoir pour pouvoir appelé et manipuler mes beans a distance?

    je développe avec la dernière version d'Eclipse et j'ai JBoss 4.0

    Merci d'avance de votre aide.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    novembre 2006
    Messages
    5 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 5 610
    Points : 6 237
    Points
    6 237

    Par défaut

    1) Non, c'est soit RMI, soit EJB... mais les EJB s'appuient sur RMI
    2) Tout dépend du "où se trouve le bean à appeler par rapport au bean en cours"

    Si ton EJB1 doit appeler un EJB2 lui même distant, il devra utiliser l'interface Remote de EJB2 et utiliser un mécanisme très proche de celui de ton client final.
    Si les 2 sont sur le même serveur, il est préférable d'utiliser l'interface Local.
    Il y a une différence fondamentale entre les 2 :
    - interface Remote => passage par valeur (marshalling/unmarshalling)
    - interface Local => passage par référence (beaucoup plus rapide !)

    3) Pour le client final, tout va se passer dans le "InitialContext".
    C'est là qu'il faudra préciser où se situe le serveur pour que le service JNDI puisse trouver l'objet. Il y a plusieurs façons de faire, mais pour débuter, tu peux utiliser la méthode avec un fichier de propriétés, un peu comme ça
    Properties props = new Properties();
    props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
    props.setProperty("java.naming.provider.url","localhost");
    props.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");

    InitialContext ctx = new InitialContext(props);
    Les valeurs du fichier "props" dépendent du serveur cible, il faudra peut-être adapter...

    Sinon, tu peux également jeter un oeil du côté du concept de façade, très pratique dans ce genre d'environnement...

  3. #3
    Invité régulier
    Inscrit en
    décembre 2008
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 28
    Points : 9
    Points
    9

    Par défaut

    Merci pour votre reponse.Je commence de comprendre le mécanisme.

    Alors si j'ai bien compris en configurant le fichier prop et avec le code suivant

    Code :
    1
    2
    3
     
    Context context = new InitialContext();
    X  Interface=  (X) context.lookup("X1/remote");
    je peut manipuler un objet de type X1 comme s'il étais local.

    Sinon comment faire pour déclarer un objet de type X1 et le mettre par exemple comme attribut de ma classe.

    Merci d'avance

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •