Ik heb hier een java-project draaien wat gebaseerd is op corba. Het is een chatomgeving waar mensen elkaar kunnen uitdagen om een spel te spelen.
We hebben een server geschreven die de clients draaiende kan houden, en dit werkt prima. Ook gaat het aanmelden van meerdere clients zonder problemen.
Maar nu het probleem: Als ik een paar clients heb draaien, en ik sluit ze ALLEMAAL af, en ik wil opnieuw een client aanmelden, dan krijg ik aan de client-kant de volgende foutmelding:
Ik kan het probleem omzeilen door minimaal 1 client draaiende te houden.
Ik denk zelf dat het probleem in de serverapplicatie zit, maar ik heb geen flauw idee wat het kan zijn.
Hier is de code van de serverapplicatie:
Ik weet niet of jullie er zo wat aan hebben. Misschien is het ook belangrijk om te weten dat in de class DBMServant de players worden geregistreerd (de player-class extends de class Thread)
Heeft iemand misschien een tip waar ik het moet zoeken?
We hebben een server geschreven die de clients draaiende kan houden, en dit werkt prima. Ook gaat het aanmelden van meerdere clients zonder problemen.
Maar nu het probleem: Als ik een paar clients heb draaien, en ik sluit ze ALLEMAAL af, en ik wil opnieuw een client aanmelden, dan krijg ik aan de client-kant de volgende foutmelding:
Het lijkt er dus op dat de client geen server kan vinden, maar de server draait ondertussen nog steeds, zonder dat daar een foutmelding tevoorschijn komt.Exception occured during event dispatching: org.omg.CORBA.COMM_FAILURE: minor code: 1398079490 completed: No
Ik kan het probleem omzeilen door minimaal 1 client draaiende te houden.
Ik denk zelf dat het probleem in de serverapplicatie zit, maar ik heb geen flauw idee wat het kan zijn.
Hier is de code van de serverapplicatie:
Java:
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
| class DasBootServer extends Frame{ public DasBootServer() { } public static void main(String[] args) { DasBootServer dasBootServ = new DasBootServer(); try { String[] arg = new String[4]; arg[0] = "-ORBInitialHost"; arg[1] = "127.0.0.1"; arg[2] = "-ORBInitialPort"; arg[3] = "900"; ORB orb = ORB.init(arg, null); DBMServant gameRef = new DBMServant(); orb.connect(gameRef); org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContext ncRef = NamingContextHelper.narrow(objRef); NameComponent nc = new NameComponent("Game", ""); NameComponent path[] = {nc}; ncRef.rebind(path, gameRef); System.out.println("Server up and running."); java.lang.Object sync = new java.lang.Object(); synchronized(sync) {sync.wait();} } catch (Exception e) { System.err.println("Error: " + e); e.printStackTrace(System.out); } } } |
Ik weet niet of jullie er zo wat aan hebben. Misschien is het ook belangrijk om te weten dat in de class DBMServant de players worden geregistreerd (de player-class extends de class Thread)
Heeft iemand misschien een tip waar ik het moet zoeken?
[ Voor 3% gewijzigd door JeroenTheStig op 21-01-2003 17:50 ]