Bonjour à tous, Excusez-moi d'avance pour le long message, mais je voulais présenter mon problème d la plus complète des façons.
Je travaille actuellemet avec eclipse 3.2 et Je voudrais créer en java, une petite application distribuée
(à titre de prémice pour une plus grande), avec un module serveur et un module client tournant autour
de la technologie RMI.
Mon projet serveur est Nommé "RMIServerTest" est architeturé comme suit:
Il est constitué d'un package "RMIServerPackage" contenant 2 fichiers soures
- L'interface à exporter nommée "PublicIterface" dans PublicInterface.java
- La classe d'implémentation nommée "RemoteObject" de remoteObject.java
Ce package est lui-même stocké dans le sous-répertoire "src" du répertoire crée pour le projet.
Je crée donc covenablement l'interface de publication de la méthode distante.
L'interface est la suivante:
L'implementation de l'interface est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 package RMIServerPackage; import java.rmi.*; public interface PublicInterface extends Remote{ // Fonction visible de l'extérieur public String DistantFonction() throws RemoteException; }
à la compilation, tous se passe bien, les fichiers .class sont corretement crées. Mais quand j'éxécute, j'ai l'exception:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 package RMIServerPackage; import java.rmi.*; import java.rmi.server.*; import java.rmi.registry.*; import java.net.*; public class RemoteObject extends UnicastRemoteObject implements PublicInterface{ String MaChaine = "Ceci est la chaie serveur"; // Costructeur RemoteObject() throws RemoteException { super(); } // Méthode distante public String DistantFonction() throws RemoteException { return "[Server Thread " + Thread.currentThread() + "---> " + MaChaine; } public static void main(String[] args) { // TODO Auto-generated method stub System.setSecurityManager(new RMISecurityManager()); try { // Déclaration d'un objet disponible dans le service d'annuaire RemoteObject NewObject = new RemoteObject(); // Enrégistrement de cet objet dans le service LocateRegistry.createRegistry(1099); Naming.bind("RMIObject", NewObject); System.out.println("Serveur Lancé"); } catch(Exception e) { e.printStackTrace(); } } }
Suite à cette erreur, je tente quand même de créer les fichiers stub et skeleton par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkConnect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown Source) at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown Source) at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source) at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source) at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source) at sun.rmi.server.UnicastRef.newCall(Unknown Source) at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source) at java.rmi.Naming.bind(Unknown Source) at RMIServerPackage.RemoteObject.main(RemoteObject.java:32)
et j'obtient bien le fichier stub "RemoteObject_stub.class" dans le répertoire de mes fichier .class, mais pas le fichier skeleton et de plus je n'arrive toujours pas à lancer mon serveur. car j'obtiens la même exception
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 I:\>rmic -d I:\Divers\WorkspaceEclipse\RMIServerTest\bin -classpath I:\Divers\WorkSpaceEclipse\RMIServerTest\bin RMIServerPackage.RemoteObject
Quelqu'un pourrait-il m'aider à y voir plus clair?
Partager