Announcement

Collapse
No announcement yet.

Statefull Kommunikation in ejb3

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

  • Statefull Kommunikation in ejb3

    Hallo zusammen,

    ich habe eine Frage bezüglich Umsetzung von einer Migration von BPEL in EJB3.
    Meine Applikation besteht aus einer Servlet und Statefull BPEL-Process.
    Eine Client-Sitzung besteht aus einer Folge von Nachrichten (3 Nachrichten).
    Der Client schickt eine Anfrage an die Servlet, die widerum die Anfrage an den
    Statefull BPEL-Process-Instanz weiterschickt. Der Statefull BPEL-Process-Instanz
    verarbeitet die Anfrage und merkt sich einiger Informationen für die
    zwei nächsten Anfragen und schickt die Antwort an die Servlet zurück,
    die widerum die Antwort an den Client zurückschickt.
    Im BPEL-Welt wird ein Statefull BPEL-Process so realisiert, dass
    man eine Correlation-Set definiert. Mit Correlation-Set kann man
    Aufrufe Process-Instanzen zuordnen. Das heißt, jeden Zusammengehörigen Aufrufe wird ein Process-Instanz
    zugeordnet. Eine Correlation ist einfach der Inhalt eines Teils der Anfrage wie zum Beispiel ConverstionID.

    Um dies in EJB3-Welt umzusetzen, habe mir überlegt, ein Statefull Sessin Bean zu nutzen. Soweit ich weiss
    generiet der EJB-Container nur einen Statefull Session-Bean für einen Client. Es scheint als guter Kandidat
    (Statefull Session-Bean) für meine Migration, aber vergessen wir nicht, dass der Client in meinem Fall
    der Servlet ist. Das heiß, für jede Client-Anfrage generiert der EJB-Container eine Statefull Session Bean und
    das will ich nicht.

    Meine Frage lautet:
    Wie kann ich eine Folge von Anfragen, die mittels einer ConversationId zusammen gehören, im EJB-Welt realisieren.

    Vielen Dank

  • #2
    Originally posted by moon1 View Post
    Soweit ich weiss
    generiet der EJB-Container nur einen Statefull Session-Bean für einen Client.
    Nein, da stimmt so nicht. Jedesmal, wenn du vom Client aus einen lookup()-Aufruf machst bekommst du eine eigene Bean-Instanz vom Server.

    Damit hast du dann auch deine Lösung: Im Client (oder Server) eine Map <ConversationID, Bean> anlegen und verwalten. Nachteilig an Stateful Session Beans ist halt, dass man den Bean-Handle nicht verlieren darf, sonst kommt man an die Bean-Instanz nicht mehr ran.

    Comment

    Working...
    X