Java als Datengateway

Wenn ich das so implementiere erhalte ich dafür:
TextArea textarea; <- Symbol not found

Eigentlich müsste doch dann meine MyThread Klasse javax.swing.jframe extenden oder nicht?
Wenn ja wie geht das?
Sorry aber ich bin echt noch nicht so fitt in Java.
 
Ein bischen vernünftiges Exceptionhandling wär auch was feines ;). ResultSets und Connections sollte man schließen. Sonst bist du ganz schnell bei nem MemoryLeak, grad wenn du alle 50ms auf die DB schießt.

Hm... und du meinst echt, das ist performant? Also ich glaube ich würde geköpft, wenn ich die DB so oft pollen würde =). Ich seh halt noch nicht wirklich durch, was von wo in welche DB soll und wer für was verantwortlich sein soll. Aber glaub mir, ständig Anfragen auf die DB zu feuern ist jenseits von ideal... Kannst du vielleicht versuchen den Erstpost noch ein wenig zu lichten? Vielleicht kommt uns dann noch ne bessere Idee?

Gruß
Ollie
 
Ok ich versuchs mal.

Das Warenwirtschaftssystem läuft mit einer ADS Datebank.
Die wichtigsten Daten die für einen Shop benötigt werden werden per Skript von der ADS DB auf den Webserver nach MYSQL synchronisiert.

Nun geht es eigentlich nur um Bestandsabfragen. Aus Sicherheitstechnischen Gründen hat der Webserver keinen Zugriff auf die ADS DB.
Daher schreibt er einen Datensatz in die MYSQL DB mit einer eideutigen ID.

Das JAVA Programm soll nun genau diesen Datensatz nehmen den Bestand in der ADS DB abfragen und das Ergebniss wieder zurück nach MySql schreiben.

Das muss relativ flott gehen da ja sonst der Shop Besucher lang auf die Ergebnisse warten müsste.
Daher dachte ich mir einfach ein Programm her zu nehmen welches die ganze Zeit auf der Mysql Tabelle poolt und wenn Datensätze vorhanden sind soll es eben in der ADS DB den Bestand abfragen und wieder zurückschreiben.

So ich hoffe ich konnte etwas Licht ins Dunkel bringen ;-)!
 
Ok ich versuchs mal.

Das Warenwirtschaftssystem läuft mit einer ADS Datebank.
Die wichtigsten Daten die für einen Shop benötigt werden werden per Skript von der ADS DB auf den Webserver nach MYSQL synchronisiert.
Was heißt "synchronisiert"? Wie oft? Wann? Bashskript? Perl Skript? GroovySkript?

Den Rest fasse ich mal mit folgendem zusammen:

Der genaue Bestand wird in der ADS gepflegt. Um diese Angaben dem Webshop zur Verfügung zu stellen, müssen diese Bestandsdaten in die MySQL übertragen werden.

Dies erstmal grob zur Anforderung, richtig?

Bevor ich da jetzt mit dem bruteforce pollen der ADS anfangen würde stellen sich doch mehrere Fragen:

* Wie oft ändert sich der Bestand?
* Welche Schnittstellen besitzt das Warenwirtschaftssystem? Kann man da vielleicht irgendwie über Änderungen am Bestand informiert werden?
* Sind WWS und ADS fest verdrahtet, oder besteht die Möglichkeit sich da dazwischen zu klemmen und auf Veränderungen zu lauschen?

So, jetzt sind wir schon fast beim Consulting... ;)

REINHAUN!
 
Was heißt "synchronisiert"? Wie oft? Wann? Bashskript? Perl Skript? GroovySkript?
Per Perl Skript alle 20 Minuten.

Der genaue Bestand wird in der ADS gepflegt. Um diese Angaben dem Webshop zur Verfügung zu stellen, müssen diese Bestandsdaten in die MySQL übertragen werden.
Genau!

Wie oft ändert sich der Bestand?
Ständig!

Welche Schnittstellen besitzt das Warenwirtschaftssystem? Kann man da vielleicht irgendwie über Änderungen am Bestand informiert werden?
Es gibt eine Import sowie Export Schnitstelle diese sind allerdings manuell zu bedienen.

Sind WWS und ADS fest verdrahtet, oder besteht die Möglichkeit sich da dazwischen zu klemmen und auf Veränderungen zu lauschen?

Was meinst du mit fest vedrahtet bzw. auf Veränderungen lauschen?
 
Wenn ich das so implementiere erhalte ich dafür:
TextArea textarea; <- Symbol not found

Eigentlich müsste doch dann meine MyThread Klasse javax.swing.jframe extenden oder nicht?
Wenn ja wie geht das?
Sorry aber ich bin echt noch nicht so fitt in Java.

Naja, Du musst die Klasse TextArea mittels import-Statement importieren (bzw. JTextArea, da Du von JFrame sprichst):

Code:
import javax.swing.JTextArea;

Nein, Dein Thread muss nicht von JFrame erben - ist ja kein Fenster ;)
 
Zuletzt bearbeitet:
Per Perl Skript alle 20 Minuten.
K... und das reicht scheinbar nicht? Gibt es eine Toleranzgrenze? Hat man sich darüber schonmal Gedanken gemacht? (z.B. max. Verzögerung von 2 Minuten?)

Das ist ungefähr genauso konkrete wie "muss synchronisiert werden" ;). Arbeitet ihr an der Börse? Oder meint "ständig" das ein Mitarbeiter durchgägngig Bestellungen und Wareneingänge einträgt und dadurch ungefähr alle X Minuten Änderungen erzeugt werden?

Es gibt eine Import sowie Export Schnitstelle diese sind allerdings manuell zu bedienen.
Also nichts, was einen über Systemevents informiert? (Das wäre auch zu einfach gewesen ;) ).

Was meinst du mit fest vedrahtet bzw. auf Veränderungen lauschen?
Naja, wenn das ne reine Desktop Software ist, ist das meist ein proprietäres Datenformat, man kann die Verbindung zu DB nicht einstellen usw. Bei CLient / Server Systemen ist die Verbindung zur DB meist konfigurierbar. Damit wäre es dann möglich, sich zwischen Anwendung und Datenbank zu hängen und manipulierende SQL Statements quasi zu klonen und somit zusätzlich auf die MySQL zu schießen.

Wenn man's kurz machen wollte würde ich sagen, pollen ist zwar keine schöne Lösung, aber wahrscheinlich die adäquateste (hinsichtlich Umsetzungszeit, Programmiererfahrung usw). Um die Performance nicht zu sehr zu beeinträchtigen, würd ich halt schauen, das Pollinterval (wie oft fragst du den Stand ab und aktualisierst die MySQL) so groß wie möglich zu machen, so dass es für den "Kunden" akzeptabel ist, die Datenbank aber "maximal" schont.

Eine andere Frage ist dabei ja auch, was passiert, wenn du beim Schreiben in die MySQL Fehler bekommst. Wie siehts mit Transaktionalität aus usw.

Ach ja, brauchst du für sowas ein GUI? ;)
 
Das ist ungefähr genauso konkrete wie "muss synchronisiert werden" . Arbeitet ihr an der Börse? Oder meint "ständig" das ein Mitarbeiter durchgägngig Bestellungen und Wareneingänge einträgt und dadurch ungefähr alle X Minuten Änderungen erzeugt werden?

Nicht direkt an der Börse aber durch Telefonverkauf ändern sich die Bestände sehr häufig. :)

Also nichts, was einen über Systemevents informiert?

Ja, darüber habe ich mir auch schon Gedanken gemacht. Leider konnte ich da nichts konkretes seitens des Herstellers der WW herausfinden, bzw. die geben mir da keine genau Auskunft. Vermutlich weil sie ihr eigens Shopsystem verkaufen wollen :mad:

Zur letzteren Fragestellung. Es handelt sich schon um ein Client Server System. Allerdings kann man nur ADS als DB auswählen.
ADS ist ja quasi der Nachfolger von Paradox Datenbanken(File und SQL basiert). Im Prinzip ist an jedem Arbeitsplatz ein Netzlaufwerk gemappt von dem der Client gestartet wird. Dort liegen auch alle Daten zugänglich für jeden. Ich weiss das diese WW mehr als unsicher ist deshalb will ich es auch vermeiden dem Webserver direkt Zugriff darauf zu geben.

Ich habe mir auch schon überlegt anhand einem Zeistempel "nur" alle 2 Minuten den Bestand in Echtzeit abzufragen, das würde die Anwendung schon mal um längen Beschleunigen.

Die Gui soll dazu dienen zu sehen ob die Bestände noch in Echtzeit abgefragt werden.
Ich hab zwar schon ein Perl Skript welches genau das auf der Konsole macht. Aber wie im ersten Post beschrieben läuft der DBD Treiber von ADS nicht vernüftig. Entweder es kommt keine Verbindung zu stande oder sie bricht einfach ohne ersichtlichen Grund ab.
Ich habe mich auch schon an den Support gewendet nur können die mir auch nicht genau sagen woran das liegt. Daher bleibt mir wohl nichts anderes übrig als auf den JDBC Treiber zurückzugreifen.

Also momentan hab ich es so gelöst das mein PHP Teil der den Datensatz für die ADS abfrage generiert nicht ewig auf ein Ergebniss wartet.
Ergo, falls es zu lange dauert hat dieser Artikel eben keinen Bestand. Sonst hab ich mir über Transaktionalität noch keine Gedanken gemacht. Ich könnte allerdings alle INSERTs, UPDATEs über mein Debugmodul in ne Datei schreiben lassen so hätte ich zumindenstens im Ernstfall alle wichtigen Statements parat.

Schonmal danke an alle die mir bisher geholfen haben! :)
 
Nur mal als Denkanstoß, weiß selbst nicht ob die Idee was taugt:

Könnte man nicht dieses Eventing-System irgendwie anders "nachbilden"? Beispielsweise bräuchte man doch nur z.B. per Broadcast die anderen Rechner im Netzwerk informieren, dass man gerade in der Datenbank den Bestand für Artikel xy geändert hat. Sollte zumindest mit Java kein Problem sein und spart das lästige Datenbank-Pollen.
 
Zurück