[JAVA&CORBA]na afmelding kan client niet opnieuw aanmelden

Pagina: 1
Acties:

  • JeroenTheStig
  • Registratie: Mei 2000
  • Nu online
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:
Exception occured during event dispatching: org.omg.CORBA.COMM_FAILURE: minor code: 1398079490 completed: No
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.
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 ]


  • ari3
  • Registratie: Augustus 2002
  • Niet online
bij Sun

Is overigens de eerste hit in Google |:(

"Kill one man, and you are a murderer. Kill millions of men, and you are a conqueror. Kill them all, and you are a god." -- Jean Rostand


  • JeroenTheStig
  • Registratie: Mei 2000
  • Nu online
m'n laatste vraag bedoelde ik wat anders, namelijk waar ik het moet zoeken in de code. Ik heb je gegeven link bekeken, en het schijnt dus een probleem te zijn wat (nog) niet is opgelost. Het gaat bij mij dus nog steeds fout, ook met de 'oplossing' door ncRef._non_existent() toe te voegen.
Het irritante is dat dit project dus nooit zonder problemen kan draaien.

  • JeroenTheStig
  • Registratie: Mei 2000
  • Nu online
oke, het schijnt dus dat er een bug in jdk1.3.1 zit. Is er iemand die dit probleem vaker is tegengekomen?
In de stub wordt deze exception gegeven:
org.omg.CORBA.portable.RemarshalException _rm