Bonjour à tous,
Je suis novice en Corba (juste lu des cours et des tutoriels), et je dois remplacer une application existante (qui est en java avec des Threads et des sockets) en une communication CORBA.
Le programme est un annuaire qui permet que lorsque le client demande un nom, le serveur lui retourne un numéro de telephone et une adresse. Le client peut aussi ajouter un nom dans le serveur.
Le hic, c'est que je ne vois pas du tout comment partir. Par exemple, quoi mettre dans mon fichier IDL.
J'ai essayé de "bricoler" quelque chose, mais je ne vois pas comment faire passer un flux entre le client et le serveur en corba (lire et écrire dedans).
Je met en annexe le code de mon client et de mon serveur si ça peut servir.
Bien sûr, je ne demande pas qu'on m'écrive le code ... Je voudrais juste avoir des pistes pour partir ...
Merci d'avance
Côté Serveur :
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
39
40
41
42
43
44
45 public class ServiceAdapter extends Thread{ ServerSocket socket = null; String service = null; public ServiceAdapter(){ try { // Create the ServerSocket on the port 4444 socket = new ServerSocket(4444); System.out.println("Server started"); } catch (IOException e) { e.printStackTrace(); } } public void run() { // Run the Server Thread Socket serviceSocket; try { while(true) { serviceSocket = socket.accept(); // The socket can accept incoming calls ObjectInputStream is = new ObjectInputStream(serviceSocket.getInputStream()); ObjectOutputStream os = new ObjectOutputStream (serviceSocket.getOutputStream()); try { service = is.readObject().toString(); } catch (ClassNotFoundException e) { e.printStackTrace(); } if(service.equals("Yellow Pages")) // If the asked service is Yellow Pages new YellowPagesSkeleton(os,is).run(); // Launch the Skeleton else if (service.equals("Phone Book")) // If the asked service is Phone Book new PhoneBookSkeleton(os,is).run(); // Launch the Skeleton else System.out.println("unknown Service : " + service); } } catch (IOException e) { e.printStackTrace(); } } }
Côté client :
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 public class ClientAdapter{ ObjectInputStream is =null; ObjectOutputStream os = null; public static Socket s=null; public Object res; public ClientAdapter(){ } public synchronized void invoke( String service, int addr,String method, String[] args){ try { // Create a Socket on the port 4444 with the address localhost s = new Socket("localhost", 4444); // Create input and output Streams os = new ObjectOutputStream(s.getOutputStream()); is = new ObjectInputStream(s.getInputStream()); os.writeObject(service); os.writeObject(addr); os.writeObject(method); } catch (IOException e) { e.printStackTrace(); } if ( (addr==-1) && (method.equals("new") )){ try { os.flush(); res = is.readObject(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } else { try { for(int i=0; i<args.length; i++) { os.writeObject(args[i]); } os.flush(); res = is.readObject(); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } try { // Close the socket s.close(); } catch (IOException e) { e.printStackTrace(); } } }
Partager