[CORBA] Client kan externe server niet bereiken

Pagina: 1
Acties:

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Ik heb een CORBA server en client geprogrammeerd in Java. De client is een applet (JApplet om precies te zijn). Ik heb deze applet gesigned, dus security is geen probleem...
Nu is het probleem als volgt: Ik heb hier op mijn computer een server draaien (met tnameserv) op poort 2809. Nu heb ik deze poort op mijn (getweakte) adsl modem gemapped naar mijn eigen computer, alleen als iemand van buiten met de applet een verbinding wil maken met de server dan krijgt ie een COMM_FAILURE exceptie. Ik heb middels de search wel wat meerdere mensen gevonden die dit probleem ook hadden, alleen daar werd nergens een oplossing gevonden (they just stopped).
Moet ik meerdere poorten dan 2809 doormappen ofzo?

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 06-09 19:42
IIOP werkt over een enkele TCP connectie per server, dus dat zou het probleem niet moeten zijn.

De logische vraag is: kun je wel (van buiten af) telnetten naar dat port? (Is het object wel op je externe interface gebonden?)

Hoe kom je aan de reference naar je server object? Geef je de IOR door aan je applet, of maak je gebruik van een naming service of implementation repository? In het laatste geval moet je de ports daarvan natuurlijk ook forwarden.

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Op donderdag 30 mei 2002 21:43 schreef Soultaker het volgende:
IIOP werkt over een enkele TCP connectie per server, dus dat zou het probleem niet moeten zijn.

De logische vraag is: kun je wel (van buiten af) telnetten naar dat port? (Is het object wel op je externe interface gebonden?)

Hoe kom je aan de reference naar je server object? Geef je de IOR door aan je applet, of maak je gebruik van een naming service of implementation repository? In het laatste geval moet je de ports daarvan natuurlijk ook forwarden.
Ik maak gebruik van de namingservice.
En dat telnetten kan ik momenteel niet testen.... :/ (niemand online |:() 'k ga eens snel iemand zoeken >:)

-Edit-
'k had nog een shell accountje bij iemand ..:) kan vanaf daar een verbinding maken naar 2809.. dus dat werkt wel.

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
'k heb inmiddels wat meer info ... denk ik.
Ik heb het volgende stukje code in de client:
code:
1
2
3
4
NameComponent nc = new NameComponent( "ServerObj", "");
NameComponent path[] = {nc};
        
ServerObj = ServerBaseHelper.narrow( ncRef.resolve( path));

en op de laatste regel (de narrow) wordt de exception gegooid... Nu denk ik dat het misschien komt omdat de nameservice niet bereikbaar is (???), en ik ga het morgen met een IOR string dan maar proberen...
Oh ja, ik had ook nog geprobeerd om alle poorten open te zetten, maar dat hielp ook niks...

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Heb het weekend niet meer besteed hieraan, m'n docent zou helpen vandaag op school, maar om onduidelijke redenen is ie er vandaag dus niet :'(
Ik denk dat ik niet kan connecten omdat in de IOR mijn interne IP adres is verwerkt, en deze is vanbuiten dus niet te bereiken... nu kan je met OmniOrb (C++ implementatie) een soort van extra ip adres (en poort) toevoegen dat wordt verwerkt in de IOR. Maar weet iemand of er ook een mogelijkheid is om dat met de SDK (1.3.1_02) te doen...???
Ik weet niet eens of het hier wel aan ligt, maar het lijkt me erg waarschijnlijk...

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 06-09 19:42
Op vrijdag 31 mei 2002 00:24 schreef _Mo_ het volgende:
code:
1
ServerObj = ServerBaseHelper.narrow( ncRef.resolve( path));

en op de laatste regel (de narrow) wordt de exception gegooid... Nu denk ik dat het misschien komt omdat de nameservice niet bereikbaar is (???), en ik ga het morgen met een IOR string dan maar proberen...
Ik zou zeggen, splits het op in afzonderlijke stappen. Eerst de naming service opvragen bij de POA (eventueel even pingen met de non_existent-method), dan de resolve op een aparte regel en als dat ook goed gaat de narrow. Als het bij het narrowen foutgaat, verwijst de reference uit de naming service niet naar een ServerBaseHelper (of is 't een null-reference).
Ik denk dat ik niet kan connecten omdat in de IOR mijn interne IP adres is verwerkt, en deze is vanbuiten dus niet te bereiken...
Dat zou heel goed kunnen. Ik heb zelf voornamelijk met MICO gewerkt en dan kan ik ten eerste op de command line opgeven op welk adres gebind moet worden en ten tweede zit er een (universele/niet-MICO-specifieke) utillity 'iordump' bij, die de in een IOR verwerkte gegevens kan laten zien. Daarmee zou je moeten kunnen zien welke hostname/port er in je IOR staan.

Succes!

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Op maandag 03 juni 2002 16:19 schreef Soultaker het volgende:

[..]

Dat zou heel goed kunnen. Ik heb zelf voornamelijk met MICO gewerkt en dan kan ik ten eerste op de command line opgeven op welk adres gebind moet worden en ten tweede zit er een (universele/niet-MICO-specifieke) utillity 'iordump' bij, die de in een IOR verwerkte gegevens kan laten zien. Daarmee zou je moeten kunnen zien welke hostname/port er in je IOR staan.

Succes!
Ik heb een ernstig vermoeden dat dit laatste zo is, alleen ik heb eigenlijk geen idee hoe dit op te lossen :'( Ik kan helaas ook niet tegen de namservice zeggen dat ie op m'n externe ip moet luisteren, want dat wordt dus niet meer terug gemapped naar mijn eigen computer. Ik kan bij Sun ook niet echt wat vinden (echt niet eigenlijk) over de mogelijkheid gewoon meerdere hostnames op te nemen in de IOR of hoe dit op een of andere manier bij de ADSL modem "om te toveren" naar een prive adres...

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 06-09 19:42
Op dinsdag 04 juni 2002 02:03 schreef _Mo_ het volgende:
Ik kan helaas ook niet tegen de namservice zeggen dat ie op m'n externe ip moet luisteren, want dat wordt dus niet meer terug gemapped naar mijn eigen computer.
Waarom zou je lokaal niet met je externe IP adres kunnen verbinden? Dat is slechts een kwestie van je netwerk configureren.

Het is trouwens in principe wel mogelijk om meerdere IP adressen in een IOR te stoppen, maar ik ben bang dat in de praktijk de meeste ORB's ervoor zullen kiezen om 't eerste IIOP adres te pakken dat ze tegen te komen en als dat faalt, een foutmelding te genereren in plaats van een volgend adres te pakken.

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Op dinsdag 04 juni 2002 02:12 schreef Soultaker het volgende:

[..]

Waarom zou je lokaal niet met je externe IP adres kunnen verbinden? Dat is slechts een kwestie van je netwerk configureren.

Het is trouwens in principe wel mogelijk om meerdere IP adressen in een IOR te stoppen, maar ik ben bang dat in de praktijk de meeste ORB's ervoor zullen kiezen om 't eerste IIOP adres te pakken dat ze tegen te komen en als dat faalt, een foutmelding te genereren in plaats van een volgend adres te pakken.
M'n externe IP adres (voor de rest van de wereld) leidt tot mijn modem, en daar probeer ik dan heen te connecten, alleen deze kan niet vanuit een intern adres mappen naar een (Zelfde) intern adres, gaat alleen van buiten af. Kortom, dan probeert ie dus te connecten met de modem, en daar draait niks van CORBA.
Ik heb onderhand nog wel wat bij de JDK 1.4.0 gevonden: http://www.infres.enst.fr/docs/jdk1.4.0/api/org/omg/IOP/TAG_ALTERNATE_IIOP_ADDRESS.html Dan maar incompatible met school hoor, hebben zij pech :7 Ik ga dat morgen implementeren (ben nu niet zo helder meer) en ga het zo snel mogelijk testen... 'k hoop heel erg dat het werkt :)

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs


  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
*zucht* Dezelfde code die met SDK 1.3.1_02 wel werkt werkt weer niet onder SDK 1.4.0_01 |:( 't compiled wel, alleen als ik de nameservice wil aanspreken dat krijg ik een invalidname exception.
Ik denk dat ik de server t.z.t. maar naar C++ poort waar ik tenminste een ander (extra) adres kan opgeven :) Ik ga nu niet meer aan de code van de server rommelen, het werkt lokaal en dat is voorlopig goed genoeg voor school, wilde het zowiezo nog in C++ doen :)
In ieder geval bedankt voor je hulp Soultaker :)

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs

Pagina: 1