[Java/Corba] stub krijgt geen reactie

Pagina: 1
Acties:

  • martennis
  • Registratie: Juli 2005
  • Laatst online: 16-01 14:17
beste tweakers,

ik ben voor school bezig een chat-applicatie te ontwikkelen met Java icm IDL en Corba.
Ik heb al verbinding van een client met de server, en de methode aanroepen op de server(stub) werken prima.

echter, bij het aanroepen van een methode van de client (op de server dus) krijgt de server geen response, waardoor de thread blijft geblokkeerd. Dit is de (door idlj gegenereerde) code, waar de thread 'vastloopt' :

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
public class _ChatterStub extends org.omg.CORBA.portable.ObjectImpl implements s_chat.Chatter
{

// ...

  public String getName ()
  {
            org.omg.CORBA.portable.InputStream $in = null;
            try {
                org.omg.CORBA.portable.OutputStream $out = _request ("getName", true);
                $in = _invoke ($out);   // Hier komt geen reactie op de InputStream?
                String $result = $in.read_string ();
                return $result;
            } catch (org.omg.CORBA.portable.ApplicationException $ex) {
                $in = $ex.getInputStream ();
                String _id = $ex.getId ();
                throw new org.omg.CORBA.MARSHAL (_id);
            } catch (org.omg.CORBA.portable.RemarshalException $rm) {
                return getName (        );
            } finally {
                _releaseReply ($in);
            }
  } // getName

// ...

}

andere methodes zijn weggelaten

kan iemand mij vertellen waarom dit kan gebeuren?
en misschien weet iemand hoe ik het op kan lossen?
thnx


mocht er meer code nodig zijn, dan moet je het maar even aangeven. er is echter gewoon een andere stub die deze methode aanroept, en er is niet zoveel bijzonders aan deze methode (lijkt me).

[ Voor 6% gewijzigd door martennis op 22-09-2006 22:47 ]


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13-02 14:38
Mijn vermoeden is dat je een single threaded POA gebruikt, en een callback probeert te doen. Dat werkt niet, omdat die ene thread op de client geblokkeert is (en op de server wacht). De makkelijkste oplossing daarvoor: multithreading thread policy instellen voor de POA op je client.

  • martennis
  • Registratie: Juli 2005
  • Laatst online: 16-01 14:17
lol.. ik werd net wakker en wat jij zei was precies waar ik mee wakker werd :P :X

maar hoe kan ik die policy dan instellen? of moet ik dat gewoon zelf programmeren?

edit:
heb al op google gezocht, maar daar maken ze alleen een policy voor de server, ik heb geen idee hoe dit moet voor de client (eerste keer corba :X)

heb het al gevonden.
ik had de chatterPOA niet geactiveerd |:(

toch bedankt :)

[ Voor 73% gewijzigd door martennis op 23-09-2006 10:57 ]