Vererbung von SessionBeans

Status
Nicht offen für weitere Antworten.

Fenixx

Aktives Mitglied
Hi zusammen,

können SessionBeans von anderen SessionBeans erben und ist dies vernünftig?

Die Frage hat folgenden Hintergrund:
Ich möchte, dass meine EJB-SessionBeans einen anderen EntityManager in meiner realen Applikation(mit JBoss Seam) als in meiner Testumgebung verwenden.

Ich dachte dabei an folgendes (so aus dem Kopf aufgeschrieben):

Java:
@Remote
public interface BasicRemote{
EntityManager getCurrentEntityManager();
void setCurrentEntityManager(EntityManager em);
}

@Stateless
public BasisStatelessBean{
@PersistenceContext(name="MyPU)
private EntityManager em;

public BasisStatelessBean(){
setCurrentEntityManager(em);
}
}

So jetzt die Vererbung:

@Stateless
public BeanA extends BasisStatelessBean implements MyInterface{
//Hier kommt der Code rein. Es wird nun zur Speicherung der currentEntityManager genommen
}

Bis jetzt sollten die EJBSessionBeans im Normalbetrieb laufen (wenn die Vererbung klappt).


Jetzt der Aufruf in der Testumgebung. Dabei möchte ich ein Singleton verwenden, ich nenne es mal PersistenceLocator, das mir einen EntityManager händisch erzeugt.

Hier die Testklasse:
public MyTest {

@Test
public void testBeanA(){
BeanA myBean = new BeanA();
myBean.setCurrentEntityManager(PersistenceLocator.getInstance().createEntityManager());
//Die eigentliche Durchführung des Tests
}

}

Was meint ihr zur Vorgehensweise? Ist dies akzeptabel?
 
Zuletzt bearbeitet von einem Moderator:
Sessionbeans können (ver-)erben wenn dass deine Frage ist.

Die Frage hat folgenden Hintergrund:
Ich möchte, dass meine EJB-SessionBeans einen anderen EntityManager in meiner realen Applikation(mit JBoss Seam) als in meiner Testumgebung verwenden.
Nun, dann wäre es vernünftiger eine andere JPA Konfig zu verwenden, meinst du nicht auch? 😉

Mit Maven2 zB. sind die Resourcen (*.xml, *.properties, eben alles ausser *.java) für die tests und das real System von Haus aus getrennt.

Sprichst du von Unit - oder Integrationstests?
 
Vielen Dank für deine schnelle Antwort.
Ich mein Integrationtests und wollte auch eine getrennte JPA Konfig verwenden. D.h. 2 getrennte persistence.xmls.
So habe ich z.B. bereits erfolgreich einen Datenbanktest durchführen können.

Hättest du noch nen eleganteren Weg als meinen aufgezeigten, oder kann man das getrost so verwenden?
 
Zuletzt bearbeitet:
Tausche lieber die persitence.xml aus für deine Integrationstests bzw. für die verschiendenen Umgebungen.

Vererbung wäre zwar möglich, finde ich aber daneben wenn es rein um die Konfiguration geht, das geht auch mit Ant zB., und schliesslich braucht man sowieso mehrere getrennte Konfigurationen (Prod, Test, Pro Entwickler, etc. pp.), ist also etwas dass es sich auf jedenfall lohnt einmal "richtig" zu lösen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben