|
|
|
|
Configuration: Windows XP Firefox 1.0.4
Salut, je galère un peu pour faire tourner RMI avec Eclipse. Un peu d'aide serait grandement appréciée !
J'ai créé deux packages, qui correspondent au client et au serveur de l'appli que je veux distribuer : STEU_client STEU_server le serveur contient: - InterfaceEau.java (implements Remote) - EauImp.java (extends UnicastRemoteObject) { //... InterfaceEau serverEau = (InterfaceEau) Naming.lookup(url); //... } c'est ce que tu as? c'est marrant qu'il essaye de caster le stub... tu peux être un plus précis s'il te plaît (un petit bout de code ^^) |
Allez un peu de code pour illustrer:
Dans ce code j'appelle l'objet distant, et il le caste. C'est ce qu'il devrait faire normalement.. package rmi.steu.client;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RMISecurityManager;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class TestRMI extends UnicastRemoteObject {
private InterfaceEau init;
private String retourRMI;
public TestRMI() throws RemoteException {
try {
System.setSecurityManager(new RMISecurityManager());
init = (InterfaceEau) Naming.lookup("rmi://localhost:1099/communique_etat");
retourRMI = init.getBonjour();
System.out.print(retourRMI);
} catch ... |
c'est ce qui devrait être fait en standart...
le soucis vient peut être du RMISecurityManager ou du bind, qu'à tu bindé? une instance de EauImp.java effectivement avec le jdk 1.5 le skeletton n'est plus présent |
ouep voila pour le binding, tout ca c'est dans StartEau, je binde un objet EauImpl :
try {
java.rmi.registry.LocateRegistry.createRegistry(1099);
//System.out.println("Mise en place du Security Manager ...");
System.setSecurityManager(new java.rmi.RMISecurityManager());
} catch(Exception e) {
System.out.print("Un registre RMI est déjà existant.\n\n");
}
try { // enregistre le service
Naming.bind("communique_etat", new EauImpl());
} catch |
Ca y est, j'ai trouvé le problème.
En fait il faut que le client et le serveur utilisent le même fichier contenant l'interface. Visiblement une copie du fichier contenant l'interface dans le projet client ne suffit pas. La cause est surement une histoire de 'classloader'. Le top serait que le client loade le fichier contenant l'interface qui se trouve sur le serveur, en utilisant l'url de celui-ci. Il parait que ca se fait. Donc va falloir que je bosse sur le 'classloader' de 'l'interface distante'. Tout ca pour afficher 'hello'.. |
effectivement c'est au niveau du classloader que tu va devoir tout paramétré.
Je crois qu'il y a des choses possibles à faire avec le SecurityManager. voilà qui pourrait t'aider d'autre part: http://java.sun.com/docs/books/tutorial/rmi/running.html N'oublie pas de poster le code de ta solution :) ça pourra toujours servir par la suite. |
en fait pour le classloader ca a pas l'air trop complique il y a juste une fonction a appeler je crois, mais faut mettre les classes dans un jar, je crois, ca je sais pas faire, mais bon c pas trop grave.. Je voulais juste savoir comment marche L'appel par RMI, et le faire tourner.
Sinon pour resoudre le truc, j'ai mis un projet commun au projet client et au projet serveur sous Eclipse, et ca marche bien. |
| 03/11 14h47 | [Firefox] Optimisation - Améliorer les performances | Mozilla Firefox |
| 24/11 13h49 | 2 bons livres pour Java et C++ | Langages |
| 26/09 11h31 | Java Runtime Machine | Navigateurs |
| 05/11 11h45 | [Javascript] Date de dernière modification | Javascript |
| 05/11 11h52 | [Javascript] Effacer un champ de formulaire lors du clic (focus) | Javascript |
| 06/12 13h45 | Java: cast de couleur | 2 |
| 02/04 12h43 | [Java] Cast dynamique | 2 |
| 23/04 16h22 | JAVA: vidéoconférence avec RMI | 0 |
| 06/05 23h48 | Alerte RMI en java comment compiler rmic???? | 1 |
![]() | Java Runtime Environment - Java Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des... | Catégorie: Java Licence: Open Source |
![]() | GPG - GPG (GNU privacy guard) est une alternative libre au logiciel PGP. Ce logiciel permet de chiffrer des documents avec un haut... | Catégorie: Chiffrement Licence: Open Source |
![]() | RemotePocketAsterisk - RemotePocketAsterisk permet d'afficher en clair les mots de passe masqués par des astérisques sur Windows Mobile. C’est une... | Catégorie: Chiffrement Licence: Freeware/gratuit |
![]() | Remote Shutdown Daemon - Quand vous gérer plusieurs ordinateur sur un même réseau, il n'est pas très aisé de devoir éteindre tous les postes, donc se... | Catégorie: Extensions Firefox Licence: Freeware/gratuit |
![]() | Logitech Cordless Desktop S510 | Catégorie: Clavier | 41.15 € Cdiscount |
![]() | Return to Castle Wolfenstein | Catégorie: Jeu vidéo Xbox | 9.00 € Micromania |
![]() | The Sims 2: Castaway | Catégorie: Jeu vidéo PSP | 17.95 € PriceMinister |
![]() | The Sims 2: Castaway | Catégorie: Jeu vidéo Nintendo DS | 23.82 € PriceMinister |