Announcement

Collapse
No announcement yet.

Kein Zugriff auf EJB übers Internet

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Kein Zugriff auf EJB übers Internet

    Hallo zusammen,

    ich steh hier vor eine kleines Problem. Ich hab keine Idee mehr.
    Ich habe eine Anwendung geschrieben, wobei der Client über JavaWebStart aufgerufen wird und der Serverteil unter JBoss(EJB3) läuft.
    Der Client versucht eine EJB aufzurufen und bekommt beim lookup() keine Antwort.
    Es wird keine Fehlermeldung geworfen, es passiert einfach nix. Laut Log-Datei kommt er nicht über den lookup() hinnaus.

    Logger logger = KitaMaintenance.getLogger();
    Properties props = new Properties();
    props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
    props.setProperty(Context.URL_PKG_PREFIXES, "org.jboss.namingrg.jnp.interfaces");
    props.setProperty(Context.PROVIDER_URL, "jnp://" + InetAddress.getByName("xxx").getHostAddress() + ":1099");
    InitialContext context;

    logger.log(Level.INFO, "IP: " + InetAddress.getByName("xxx"));
    context = new InitialContext(props);
    logger.log(Level.INFO, "Context: " +context.toString());
    IChildrenRemote remote = (IChildrenRemote) context.lookup("KitaEE/ChildrenBean/remote");
    logger.log(Level.INFO, "Remote: "+remote.toString());
    list = remote.getSearchData();


    Laut Log-Datei kommt er nur bis zu "Context:"
    INFO - Anwendung gestartet
    INFO - IP: xxxx/xxx.xxx.133.90
    INFO - Context: javax.naming.InitialContext@1b03c1a

    Wenn ich die Anwendung im Netztwerk aufrufe, funktioniert es aber.
    Die Ports TCP 1098-1099 sind im Router forwarded.
    Über Netzwerktools seh ich auch das die externe IP über Port 1099 auch eine Antwort vom RMI bekommt. Aber dann geht es nicht weiter.

    Ich hoff es hat jemand eine Idee

  • #2
    Hallo CDSchorsch,

    das wird nie klappen, auch wenn du die Ports 1098/1099 freischaltest. Du bist auf ein Problem gelaufen, welches seit CORBA-Zeiten bekannt ist, und was auch für RMI zutrifft. Beide Protokolle belegen nämlich willkürlich Ports für Client-Server-Kommunikation. 1099 z.B. ist nur für Anfragen an den Nameservice zuständig; die Kommunikation mit einer EJB läuft auf einem anderen, wie gesagt, willkürlich belegten Port.
    Dies ist auch ein Grund für das Webservices-Konzept: alles über Http (Port 80) laufen zu lassen.

    RMI-Server können das im Prinzip auch: Tunneling via HTTP - und das ist deine einzige Chance, willst du nicht ein VPN-Netzwerk verwenden. Wie das geht, musst du über die JBoss-Dokus rausfischen (viel Spaß!).

    Carlo

    Comment

    Working...
    X