EJB: Eine Remote Bean soll eine Local Bean ansprechen und dem Client übergeben

Dieses Thema EJB: Eine Remote Bean soll eine Local Bean ansprechen und dem Client übergeben im Forum "Application Tier" wurde erstellt von virtuellesNugat, 21. Juni 2012.

Thema: EJB: Eine Remote Bean soll eine Local Bean ansprechen und dem Client übergeben Hallo! Ich habe mich die letzten Tage mit EJB und JBoss befasst. Mittlerweile pack ich es nach der JNDI-Norm...

  1. Hallo!

    Ich habe mich die letzten Tage mit EJB und JBoss befasst.
    Mittlerweile pack ich es nach der JNDI-Norm meine Remote Beans anzusprechen (lookup & invoke). Aber ich hätte es gerne, dass ich auf dem Server eine Remote Bean habe, welche eine Local Bean anspricht. Nehmen wir mal an, dass die Local Bean über eine Methode den String "Hello World" zurückgibt. Die Remote Bean soll dann eine Methode bereitstellen, welche die lokale Bean anspricht und dort die Helloworld-Methode benutzt und das Ergebnis an den aufrufenden Client zurückliefert.

    Der JNDI Name für den Remote-lookup wird so gebildet:
    Code (Java):
    final String fullJndiName = "ejb:" + appName + "/" + moduleName + "/"
        + distinctName + "/" + beanName + "!" + viewClassName;
    Wie baue ich den Lookup für eine lokale Bean auf?

    Außerdem erstelle ich ja den SessionContext (per Hilfsmethode):
    Code (Java):
    // Hashtable für Verbindungsdetails aufsetzen
    Hashtable p = new Hashtable();
    // nur den notwendigen Parameter setzen, die anderen werden bezogen
    p.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
    // Context erstellen und zurückgeben
    return new InitialContext(p);
    Dabei wird auf die jboss-ejb-client.properties zurückgegriffen, welche sich im Classpath befindet und die weiteren Verbindungsparameter bereitstellt.

    Hier sehe ich ein weiteres Problem: Solange der Client die Remote Bean aufruft funktioniert alles tadellos. Sobald dann aber die Remote Bean die loakle Bean nutzen möchte, können die Verbindungsinformationen ja nicht mehr stimmen oder? Denn der JBoss läuft auf einer virtuellen Maschine und somit nicht auf dem localhost.

    Kann mir da jemand weiterhelfen? Ich bin jetzt schon seit 3 Tagen auf diesem Problem gestrandet :(
    Danke!
     
  2. Vielleicht hilft dir das Grundlagen Training weiter --> *Klick*
  3. Okay der Jndi-Lookup über den Context ist wohl nur für Remote-Aufrufe gedacht.

    Um auf die LocalBean zugreifen zu können bediene ich mich einfach der Dependency Injection und alles ist gut :)
     
  4. Ja... und wenn du doch mal selber einen Lookup machen möchteste, dann erstelle einfach einen parameterlosen InitialContext... der JBoss kennt seine eigenen Parameter schon ... ;-)
     
  5. Kostenloses Java-Grundlagen Training im Wert von 39 €
    Schau dir jetzt hier das Tutorial an und starte richtig durch!