Ik ben bezig een chatserver/client te ontwikkelen in Corba.
De server schrijf ik in c++, de client in java.
De client opent een verbinding met de server via de namingservice.
Mijn bedoeling is om vervolgens de server terug te laten verbinden naar de client, zodat de client gaat wachten op inkomende berichten.
Hiermee voorkom je dat clients moeten pollen op nieuwe berichten, dat is namelijk minder efficient.
Het gaat dus om een callback, zoals bijv. word besproken in deze tutorial:
http://java.sun.com/j2se/...ide/idl/jidlExample3.html
Uiteraard staan de client en de server fysiek op verschillende plaatsen,
maar hier onstaat ook het probleem.
De verbinding naar de server toe werkt perfect, ik kan remote functies aanroepen.
Als ik echter op de server een functie aanroep die op de client staat (via de aangemaakte callback verbinding dus) blijft de functie hangen en gebeurd er verder niets. De server geeft geen foutmeldingen oid, de client zegt na een hele tijd dat de verbinding verbroken is.
Dat lijkt natuurlijk een probleem in de code, maar dat blijkt niet zo te zijn.
Als ik de client namelijk van dezelfde host start als de server, gaat het WEL goed!
Het gaat dus alleen fout als client en server niet op dezelde machine staan.
Ik kan hier niet veel van maken, en ook google geeft weinig uitkomst deze keer.
Dit is het stukje code die de callback aanmaakt:
Iemand dit probleem wel eens tegengekomen?
De server schrijf ik in c++, de client in java.
De client opent een verbinding met de server via de namingservice.
Mijn bedoeling is om vervolgens de server terug te laten verbinden naar de client, zodat de client gaat wachten op inkomende berichten.
Hiermee voorkom je dat clients moeten pollen op nieuwe berichten, dat is namelijk minder efficient.
Het gaat dus om een callback, zoals bijv. word besproken in deze tutorial:
http://java.sun.com/j2se/...ide/idl/jidlExample3.html
Uiteraard staan de client en de server fysiek op verschillende plaatsen,
maar hier onstaat ook het probleem.
De verbinding naar de server toe werkt perfect, ik kan remote functies aanroepen.
Als ik echter op de server een functie aanroep die op de client staat (via de aangemaakte callback verbinding dus) blijft de functie hangen en gebeurd er verder niets. De server geeft geen foutmeldingen oid, de client zegt na een hele tijd dat de verbinding verbroken is.
Dat lijkt natuurlijk een probleem in de code, maar dat blijkt niet zo te zijn.
Als ik de client namelijk van dezelfde host start als de server, gaat het WEL goed!
Het gaat dus alleen fout als client en server niet op dezelde machine staan.
Ik kan hier niet veel van maken, en ook google geeft weinig uitkomst deze keer.
Dit is het stukje code die de callback aanmaakt:
code:
1
2
3
4
5
6
7
8
| listener = new ClientListenerImp(this);
POA rootPOA = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
rootPOA.activate_object(listener);
rootPOA.the_POAManager().activate();
ClientListener ref = ClientListenerHelper.narrow(rootPOA.servant_to_reference(listener));
chatConnectionManager.addListener(ref); |
Iemand dit probleem wel eens tegengekomen?