1 Reply Latest reply on Apr 5, 2002 7:37 AM by Annegret Sternagel

    SessionEJB Vererbung/Polymorphismus

    Henri Briod Newbie

      Als EJB-Anfaenger stellt sich mir folgendes Problem:
      Echter Polymorphismus scheint mir bei EJB's [noch] nicht
      unterstuetzt zu sein. Daher moechte ich ueber verschiedene deployed JNDI-Names MEHRERE Instanzen des
      gleichen Types Bean (mit einem gleichen Home- und RemoteInterface) im JBossContainer bereithalten. Die
      INNERE Implementation dieser Beans wuerde sich dann
      unterscheiden und so entstaende quasi polymorphes
      Verhalten.
      also:
      Was sind die Kriterien, nach welchen gem. EJB-Spezifika-
      tion und JBoss eine Instanz einer EJB im EJB-Container
      identifiziert ist? Ich befuerchte bald, dass es die
      Java-Package-Struktur im deployed jar-File ist?
      Hat jemand eine Loesung fuer diese Problematik?

      Henri

        • 1. Re: SessionEJB Vererbung/Polymorphismus
          Annegret Sternagel Newbie

          Hallo Henri,

          warum nicht in Englisch ?

          Ich bin mir nicht sicher ob es EJB-Spez.-konform ist. Aber folgendes sollte in jboss 2.4.x funktionieren:

          Man kann im ejb-jar.xml für unterschiedliche Beans <ejb-name> das gleiche remote- und/oder home-interface angeben und jeweils eine andere Implementierungsklasse <ejb-class>. Diese müssen nicht unbedingt im gleichen java-package liegen (wird von uns für das remote-interface erfolgreich genutzt).
          Der JNDI-Name wird in jboss.xml festgelegt und ist unabhängig von der java-package-Struktur, wenn kein jboss.xml vorhanden ist, ist der default <ejb-name>.

          Eine andere Möglichkeit wäre, ein Basis-Remote-Interface zu schreiben und andere Remote-Interfaces davon erben zu lassen. In der Implementierung müssen dann aber auch die Methoden des Basis-Interfaces implementiert werden und im Home-Interface muß die wirklich erzeugte (also die abgeleitete) Klasse angegeben werden.

          Man könnte auch die gleichen Beans aus ejb-jar.xml unter verschiedenen JNDI-Namen in jboss.xml mehrfach angeben.

          Unter http://www.theserverside.com/discussion/thread.jsp?thread_id=265 gibt es eine (leider schon etwas ältere) Diskussion zum Thema "Inheritance in EJB"

          Wir in unserem Projekt haben eine flache Basisklasse mit allgemeinen Attributen und Methoden, von der alle Bean-Implementierungsklassen erben (Vorsicht, wenn Attribute in der Basisklasse sind darf "implements Serializable" nicht fehlen) und wir verwenden ein Remote-Interface für mehrere Beans, dieses liegt in einem anderen Java-Package als die Implementierung.

          Annegret