Bonjour,
je travail actuellement sur un petit projet client / serveur en RMI mais je suis confront� � un probl�me majeur.
Je dispose actuellement de la classe (impossible de les modifiers) Service et de son interface IService. IService n'h�rite pas d'une autre interface.
Dans un premier temps il met demande d'avoir un temps de vie pour l'objet. J'ai donc rajouter trois classes :
- ServiceTime qui permet de stocker un Service et la derni�re date d'appel d'une des m�thodes
- ServiceTimeMap en singleton : qui permet de stocker une liste de ServiceTime en fonction d'un ID.
- ServiceTimeInvocationHandler qui impl�mente InvocationHandler. Cette m�thode connais l'ID d'un ServiceTime
Quand je demande � mon programme (pour le moment je ne test pas sur une architecture client / serveur)...
d'instancier je cr�� un proxy afin d'intercepter les appels des m�thodes de Service via la classe
public Object invoke(Object proxy, Method method, Object[] args)
Une fois dans cette m�thode je r�cup�re mon objet ServiceTime je compare les dates et si le timeToLive est OK
J'appel ma m�thode sinon je retourne une exception.
Jusque l� mon programme marche parfaitement.
Dans un seconds temps, je doit donc passer en architecture RMI. Donc le client doit pouvoir utiliser des Services.
Malheureusement, je ne sais pas comment faire sachant que IService n'h�rite pas de Remote...
Je pensais
1) faire un proxy encore qui aurait pour interface Remote / IService et Serializable... (De la m�me fa�on que le dessus)
2) UnicastRemoteObject.export(.....)
3) un Naming.bind(....)
Mais une fois que j'appel je fais un lookup depuis le client, je r�cup�re bien mon Objet mais malheureusement
il n'impl�mente plus IService et Seriablizable mais que Remote et quand je tente de caster j'ai un ClassCastException.
Auriez-vous une id�e ?
Merci par avance pour votre aide.
Partager