-
1. Re: SessionEJB Vererbung/Polymorphismus
annegret Apr 5, 2002 7:37 AM (in response to henri)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