Bonjour,
j'ai un petit peu de mal avec les references corba
un petit exemple pour expliquer mon problème :
je veux créer un irc, j'ai un objet distribué "Conference " et des
objets "Participant". Je définis donc les deux interfaces. Je fais la
projection en java de ces interfaces que j'implante.
Sur le serveur, je crée un objet distribué Conférence. Côté client, je
récupére l'objet Conférence, jusque là aucun problème. Je crée ensuite
un participant :
Participant p = new ParticipantImpl(); //ParticipantImpl est
l'implantation de l'interface Participant.
conference.inscrire(p); //inscription du participant à la conférence.
à la compilation, rien n'est signalé, le serveur se lance correctement
tandit que le client se plante en me disant :
Client.java:12: incompatible types
found : IRC.ParticipantImpl
required: IRC.Participant
Participant part = new ParticipantImpl();
ParticipantImpl est pourtant l'implantation de Participant !!
aJe me répond à moi-même pour ceux qui aurait ce souci : Il suffisait juste d'activer l'adaptateur d'objet côté client! simple comme bonjour.
Frédéric Lachasse
"ali k" wrote in message news:cb1q1f$nl0$
Bonjour, j'ai un petit peu de mal avec les references corba un petit exemple pour expliquer mon problème :
je veux créer un irc, j'ai un objet distribué "Conference " et des objets "Participant". Je définis donc les deux interfaces. Je fais la projection en java de ces interfaces que j'implante. Sur le serveur, je crée un objet distribué Conférence. Côté client, je récupére l'objet Conférence, jusque là aucun problème. Je crée ensuite un participant : Participant p = new ParticipantImpl(); //ParticipantImpl est l'implantation de l'interface Participant. conference.inscrire(p); //inscription du participant à la conférence. à la compilation, rien n'est signalé, le serveur se lance correctement tandit que le client se plante en me disant :
Client.java:12: incompatible types found : IRC.ParticipantImpl required: IRC.Participant Participant part = new ParticipantImpl();
ParticipantImpl est pourtant l'implantation de Participant !!
Si vous avez une petite idée ... D'avance merci.
Les objets "remote" n'existent que sur le serveur. Le client les utilisent à travers des objets "proxy". Le client ne doivent jamais créer des objets serveurs directement. C'est le serveur qui va les créer et quand ils sont retournés au client, la mécanique CORBA (Java RMI-IIOP) va créer un proxy dans le client pour y accéder.
Ce que tu dois faire, c'est donc de définir une fonction dans l'interface de Conference pour créer un nouveau Participant dans la conférence et le retourner au client:
public interface Conference extends Remote { ... public Participant newParticipant() throws RemoteException; ... }
Et l'implémentation sur le server:
public class ConferenceImpl implements Conference { private ArrayList list = new ArrayList(); ... public Participant newParticipant() throws RemoteException { Participant participant = new ParticipantImpl(); list.add(participant); return participant; } ... }
L'objet retourné ne sera pas un ParticipantImpl, mais une classe proxy qui implemente Participant.
-- Frédéric Lachasse - ECP86
"ali k" <koudri.a@wanadoo.fr> wrote in message
news:cb1q1f$nl0$1@news-reader5.wanadoo.fr...
Bonjour,
j'ai un petit peu de mal avec les references corba
un petit exemple pour expliquer mon problème :
je veux créer un irc, j'ai un objet distribué "Conference " et des
objets "Participant". Je définis donc les deux interfaces. Je fais la
projection en java de ces interfaces que j'implante.
Sur le serveur, je crée un objet distribué Conférence. Côté client, je
récupére l'objet Conférence, jusque là aucun problème. Je crée ensuite
un participant :
Participant p = new ParticipantImpl(); //ParticipantImpl est
l'implantation de l'interface Participant.
conference.inscrire(p); //inscription du participant à la conférence.
à la compilation, rien n'est signalé, le serveur se lance correctement
tandit que le client se plante en me disant :
Client.java:12: incompatible types
found : IRC.ParticipantImpl
required: IRC.Participant
Participant part = new ParticipantImpl();
ParticipantImpl est pourtant l'implantation de Participant !!
Si vous avez une petite idée ...
D'avance merci.
Les objets "remote" n'existent que sur le serveur. Le client les utilisent à
travers des objets "proxy". Le client ne doivent jamais créer des objets
serveurs directement. C'est le serveur qui va les créer et quand ils sont
retournés au client, la mécanique CORBA (Java RMI-IIOP) va créer un proxy
dans le client pour y accéder.
Ce que tu dois faire, c'est donc de définir une fonction dans l'interface de
Conference pour créer un nouveau Participant dans la conférence et le
retourner au client:
public interface Conference extends Remote
{
...
public Participant newParticipant() throws RemoteException;
...
}
Et l'implémentation sur le server:
public class ConferenceImpl implements Conference
{
private ArrayList list = new ArrayList();
...
public Participant newParticipant() throws RemoteException
{
Participant participant = new ParticipantImpl();
list.add(participant);
return participant;
}
...
}
Bonjour, j'ai un petit peu de mal avec les references corba un petit exemple pour expliquer mon problème :
je veux créer un irc, j'ai un objet distribué "Conference " et des objets "Participant". Je définis donc les deux interfaces. Je fais la projection en java de ces interfaces que j'implante. Sur le serveur, je crée un objet distribué Conférence. Côté client, je récupére l'objet Conférence, jusque là aucun problème. Je crée ensuite un participant : Participant p = new ParticipantImpl(); //ParticipantImpl est l'implantation de l'interface Participant. conference.inscrire(p); //inscription du participant à la conférence. à la compilation, rien n'est signalé, le serveur se lance correctement tandit que le client se plante en me disant :
Client.java:12: incompatible types found : IRC.ParticipantImpl required: IRC.Participant Participant part = new ParticipantImpl();
ParticipantImpl est pourtant l'implantation de Participant !!
Si vous avez une petite idée ... D'avance merci.
Les objets "remote" n'existent que sur le serveur. Le client les utilisent à travers des objets "proxy". Le client ne doivent jamais créer des objets serveurs directement. C'est le serveur qui va les créer et quand ils sont retournés au client, la mécanique CORBA (Java RMI-IIOP) va créer un proxy dans le client pour y accéder.
Ce que tu dois faire, c'est donc de définir une fonction dans l'interface de Conference pour créer un nouveau Participant dans la conférence et le retourner au client:
public interface Conference extends Remote { ... public Participant newParticipant() throws RemoteException; ... }
Et l'implémentation sur le server:
public class ConferenceImpl implements Conference { private ArrayList list = new ArrayList(); ... public Participant newParticipant() throws RemoteException { Participant participant = new ParticipantImpl(); list.add(participant); return participant; } ... }