2012-04-04 7 views
0

Ich habe eine Client/Server-Anwendung, die über JNDI/RMI/IIOP kommuniziert, wobei auf dem Client ein Glassfish-Clientcode (NICHT als Glassfish-Client) und auf der Serverseite eine Glassfish-Instanz verwendet wird.Wie debugge ich RMI/IIOP über das Internet?

Ich habe einige Glassfish Multimode-Skripte, die ich verwenden, um sicherzustellen, dass die Domänen, die ich auf beliebigen Computern erstellen, völlig identisch und korrekt konfiguriert sind.

Mit diesem Skript im lokalen Netzwerk habe ich bereits sichergestellt, dass ich auf eine remote Glassfish Server-Instanz von Client-Code auf meinem Computer zugreifen konnte (das war eine ziemlich vernünftige Schätzung, aber ich tendiere dazu, alle Dinge zu testen, die ich nicht völlig bin sicher sein).

Nächster Schritt ist, dass diese Client/Server-Anwendung funktioniert (ich sollte stattdessen sagen "durch") Internet: mit meinem Client-Code in meinem Unternehmen LAN (mit anderen Worten auf meinem Computer) und meinem Server-Code auf einem Amazon VM, auf der mein Glassfish-Server ausgeführt wird. Aus irgendwelchen Gründen läuft der Remote-Glassfish auf einer Windows-VM. Offensichtlich

(wie ich diese Frage stellen, können Sie sicher die durch Internet-Test erraten funktioniert nicht. Und du hast Recht.

Also, um mehr Vermutungen zu haben, begann ich SmartSniffer sowohl auf meiner Maschine und auf Server.

auf meinem Rechner, kann ich nur ein TCP-Paket zu dieser Server-Instanz gehen (und nichts kommt zurück) sehen.

auf Serverinstanz, kann ich ein Paket eingeben (die Client-Abfrage) sehen und ein Paket, das beendet wird (die Antwort des Servers) Diese Serverantwort sieht so aus:

[04.04.2012 11:47:13 AM: 917] GIOP ....... (................ NameService ... .._ is_a ................... NEO ................ ª ....... (IDL: omg.org/SendingContext/CodeBase:1.0 ............ n ........ 172.27.63.145.Ô2 .... ¯ «Ë ........ e ........................... ................... . .. ............ & ............... (IDL: omg.org/CosNaming/NamingContext: 1.0.

Diese 172.27.63.145 Adresse ist meine IP im lokalen Netzwerk.

[04.04.2012 11:47:13 AM: 917] GIOP ....... 2 ............ NEO ...... .......... 0 ....... (IDL: omg.org/SendingContext/CodeBase: 1.0 ............ ô ....... .46.137.114. ###. '5 .... ¯ «Ë ........ d ....................... .... ................... ... ... & .......... .! ... | ............... $ ... ... f ............ 10.241.42. ###. '6. @ ........ g .............. g ......... default ............. ...... g ............... + IDL: omg.org/CosNaming/NamingContextExt: 1.0 ............. ¢ .. ...... 10.241.42.208.'5 ... M¯ «Ë .... ... d ... S1AS-ORB ............ RootPOA ... . TNameService ............................... ................. ... ... ........... & ......

Das 46.137.114. ### ist extern eine meiner Amazon VM und 10.241.42. # ## ist seine interne IP in Amazon Magic Server.

So scheint es Server antwortet, nein?

Aber diese Antwort findet nie ihren Weg zu meinem Rechner in meinem Netzwerk.

Also ... wie kann ich überprüfen, wo es verloren geht? Scheint, dass ein Paketschnüffler seine Arbeit getan hat, aber was kann ich jetzt tun?

HINWEIS Diese Frage ist eine Klärung der "How to Connect a glassfish client to glassfish server over NATs?"

Antwort

0

Vielleicht dumme Frage, aber ist Ihre Amazon EC2-Instanz mit allen erforderlichen Ports offen für Ihr Kommunikationsprotokoll zu arbeiten, konfiguriert? Sie können konfigurierte offene Ports in der Sicherheitsgruppe Ihrer Instanz sehen, der in der AWS-Konsole unter EC2-> Sicherheitsgruppen zugewiesen ist.