Announcement

Collapse
No announcement yet.

Wie langlaufende Datei-Importe in J2EE-Architektur RICHTIG umsetzen ?

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

  • Wie langlaufende Datei-Importe in J2EE-Architektur RICHTIG umsetzen ?

    Hallo,

    ich habe folgende Problemstellung:

    Der Inhalt von großen Files soll über eine Business-Logik, die in einem J2EE-Server läuft, in eine Datenbank importiert werden. Dabei soll ein Tool einen Ordner überwachen, und wenn eine neue Datei in diesen Ordner kommt, soll diese importiert werden.

    Hierbei ergeben sich zwei Probleme:

    1) J2EE und File I/O, was ist erlaubt?
    2) Wie werden langlaufende Prozesse in J2EE abgebildet werden?

    Im Moment läuft die Verzeichnisüberwachung als J2EE-Client. Wenn ein File kommt, importiert dieser Client einzelne Datenblöcke dieses Files in den J2EE-Server (über Session Beans als Session Facade). Da diese Importe aber 1) wichtig sind und 2) sehr viel Laufzeit benötigen, muss man sich die ganze Hochverfügbarkeit und Skalierbarkeit wieder von Hand basteln.

    Sehr viel wünschenswerter wäre es, wenn folgendes ginge:
    Der Verzeichnis-Überwacher sendet nur eine Message (JMS) mit dem Filename an den J2EE-Cluster. Dieser instanziert auf einem Cluster-Knoten eine MDB. Diese führt den Import durch.
    Natürlich muss das Import-Verzeichnis dann als Share für alle Cluster-Knoten zur Verfügung stehen.
    Hierbei würde die EJB dann aber auf java.io zugreifen und überdies "ewig" ( >1h) laufen.

    Frage: Gibt es einen "richtigen Weg", wie man so etwas implementieren sollte?

    Tschüss

    Volker

  • #2
    Hallo Volker,

    das sind ja gleich ein paar Fragen auf einmal ;-))

    Also, ich würde lang laufende Prozesse asynchron abbilden, damit Clients für die Dauer nicht geblockt sind. Für solche Aktionen eigenen sich dann beispielsweise sehr schön MDBs (Message-driven Bean). Das hat zum einen den Charm, dass die zu verarbeitenden Daten, wenn sie einmal auf dem Server sind, bereits "gesichert sind", da sie sich in einer Queue oder einem Topic befinden und zum anderen der Server dann im Hintergrund über eine MDB die Daten verarbeiten kann.

    Mir ist das Szenario bei euch noch nicht ganz klar. Ihr habt ein allgemeines Verzeichnis, in das jemand einfach eine Datei hineinkopiert? Diese soll dann vom Server aus aus dem Verzeichnis ausgelesen werden?

    Wie groß sind denn die Dateien bei der angegeben Laufzeit >1 h ? Wir haben in einem Projekt Dateien mit 30 - 50 MB in ein paar Minuten auf den Server transferiert und dann asynchron in eine Datenbank (in Blobs) eingespielt... funktioniert wunderbar.

    Zurück zum Szenario: gibt es eine Clientapplikation, mit der die Dateien in das überwachte Verzeichnis kopiert werden? Könnte der Client nicht auf direkt den Server kontaktieren und die Datei per Upload zum Server transferieren?

    Viele Fragen ;-) und viele Grüße,
    Olive

    Comment

    Working...
    X