Announcement

Collapse
No announcement yet.

DB Connection in EJB

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

  • DB Connection in EJB

    Hallo,

    ich baue in einem EJB (BMP) eine DB Verbindung
    (erfolgreich) in der setSessionCtx auf.
    Nachdem mein Testclient die Findmethode(pk) nach dem
    ersten lookup ein- oder mehrfach genutzt hat und eine
    neue Instanz des HomeObj genutzt wird, ist die DB
    Connection nicht mehr verfügbar?

    Kann ich nur eine Instanz des HomeObj nutzen?

    Gruss,
    Dirk

  • #2
    Grundsätzlich kann man das schon so machen (Datenbankverbindung in set/unsetEntityContext auf bzw. abbauen). Die Datenbankverbindung besteht dann während der Lebensdauer des Entity Beans, also auch wenn es sich im Pool befindet. Wie oft man sich das Home holt, spielt keine Rolle.
    <br>
    Welchen Server benutzt Du denn? Der JBoss beispielsweise erlaubt in der Default-Konfiguration keine lange DB-Verbindungen. Am Ende der Transaktion wandert die Verbindung zurück in den Pool und das WrappedConnection-Objekt wird ungültig (wenn man darauf zugreift fliegt eine Exception). Man kann dieses (nicht J2EE-konforme) Verhalten umstellen.
    <br>
    Es ist aber besser nur die DataSource zu speichern, die resource-ref als Shareable zu kennzeichnen und in jeder Methode die Verbindung auf- und abzubauen. Das kostet kaum Zeit, weil der Server die Connection sowieso im Hintergrund offenhält und innerhalb der Transaktion immer dieselbe liefert. Allerdings steht die Verbindung dann anderen zur Verfügung, wenn die Bean nutzlos im Pool rumliegt. Was nun wirklich effizienter ist, hängt auch vom Server ab, im Zweifelsfall sind aber die kurzen Verbindungen besser.

    Gruß,

    Alwi

    Comment

    Working...
    X