Langlebige Berechnungen auf Server ausführen

Status
Nicht offen für weitere Antworten.

musiKk

Top Contributor
Guten Tag,

ich hatte jetzt die Ehre, mich auch mal auf die Enterprise-Ebene zu begeben und fühle mich wie am ersten Tag Java. Aber man wächst ja mit seinen Aufgaben...

Die Anforderung ist ein WebService (im Moment auf Geronimo), über den man auf der Servermaschine Jobs starten kann. Das kann absolut alles sein, Sachen im Dateisystem, Datenbankoperationen, völlig offen. Das habe ich über eine Plugin-Engine gelöst. Für die Jobverwaltung habe ich einen JobManager, der die ganze Threadverwaltung durchführt. Nicht schlagen, alles natürlich Singletons, irgendwie muss ich bei verschiedenen Requests ja wieder an die Referenzen kommen. Und Plugin- respektive JobManager sollen auch nur einmal existieren. Das klingt für die Experten sicher schon wieder grausam, aber das sind halt meine ersten Schritte, da ist noch fast alles POJO. Die Jobs können durchaus ne Weile dauern und der Client soll zwischendurch immer mal nachfragen können, ob das Ergebnis inzwischen fertig ist oder nicht.

Das Projekt ist nicht so groß, darum kann man da recht schnell viel umschreiben. Da ist halt meine Frage: Wie würde man das von der Architektur her gescheiter machen? Es läuft im Moment zwar und ich würde auch sagen, sehr gut, aber vom EE-Standpunkt ist das sicher gar nichts. Ich versuche mich auch in die EJB-Thematik einzuarbeiten (ich weiß nichtmal, ob das hier relevant ist, überall nur Akronyme und Buzzwords...), aber das fällt mir auch nicht so einfach. Gerade, wenn ich z. B. lese, dass eine EJB java.io.* nicht verwenden darf. Die Plugins liegen als JARs auf der Platte, irgendwie muss ich die doch lesen können?

Vielleicht kann mir der ein oder andere einen Denkanstoß geben.

Danke schonmal
mK
 

grischan

Mitglied
Grundsätzlich ist das nicht falsch was du da machst. Die Sache mit dem java.io ist besonders auf Portabilität zurückzuführen. Die jeweiligen Jobs müssen bei dir bestimmt ein Interface implementieren (oder eine abstrakte Klasse erweitern). Du könntest dann jedes plugin als eigenes EAR bereitstellen lassen, welches seine "Hauptklasse" über JNDI nach außen bereitstellt und der JobManager hollt sich die Klasse über einen JNDI-Lookup (Damit wärst du die java.io Beziehung los, weil das Lesen der JARs nun der App-Server übernimmt.)
Nur das Polling der Clients würde ich nicht durchführen. Gib den Clients doch ein WebService- (oder anderes Remote-)Interface, über welches der JobManager sie benachrichtigen kann, wenn der Job abgeschlossen ist. Oder nimm eine MQ-Anwendung um beide Seiten zu entkoppeln.
 
M

maki

Gast
Für die Jobverwaltung habe ich einen JobManager, der die ganze Threadverwaltung durchführt.
Dir ist klar dass du auf einem ApplicationServer keine Threads selber starten darfst?

Gerade, wenn ich z. B. lese, dass eine EJB java.io.* nicht verwenden darf.
java.io darfst du beuntzen, aber eben keine File Operationen aus java.io.
Wobei manch AppServer das zwar erlaubt, ist aber schlecht wenn man irgendwann dann einen Cluster aufziehen will.
 

musiKk

Top Contributor
Danke für die Ratschläge.

Die jeweiligen Jobs müssen bei dir bestimmt ein Interface implementieren (oder eine abstrakte Klasse erweitern).

Richtig.

Du könntest dann jedes plugin als eigenes EAR bereitstellen lassen, welches seine "Hauptklasse" über JNDI nach außen bereitstellt und der JobManager hollt sich die Klasse über einen JNDI-Lookup (Damit wärst du die java.io Beziehung los, weil das Lesen der JARs nun der App-Server übernimmt.)

Ok. Wie gesagt, ich bin noch im kalten Wasser, darum kann ich die Möglichkeiten, die man hat, noch nicht richtig einschätzen. Ich werde mich in der Richtung mal umschauen.

Nur das Polling der Clients würde ich nicht durchführen. Gib den Clients doch ein WebService- (oder anderes Remote-)Interface, über welches der JobManager sie benachrichtigen kann, wenn der Job abgeschlossen ist. Oder nimm eine MQ-Anwendung um beide Seiten zu entkoppeln.

Da hatte ich auch schon dran gedacht. Diese Entscheidung liegt aber vermutlich nicht bei mir. Ich hatte sonst noch als Mittelweg in Erwägung gezogen, dass ein Job seine voraussichtliche Restzeit angeben kann, sofern das abschätzbar ist.

Dir ist klar dass du auf einem ApplicationServer keine Threads selber starten darfst?

Wie gesagt, ich bin mir bewusst, dass das nicht so toll ist. Ich kann vieles schlicht noch nicht einschätzen und/oder umsetzen. Ich bin mir z. B. immer noch nicht im Klaren, wie ich "legal" Aufgaben im Hintergrund starte, die auch mal ein paar Stunden dauern können.
 
M

maki

Gast
Wie gesagt, ich bin mir bewusst, dass das nicht so toll ist. Ich kann vieles schlicht noch nicht einschätzen und/oder umsetzen. Ich bin mir z. B. immer noch nicht im Klaren, wie ich "legal" Aufgaben im Hintergrund starte, die auch mal ein paar Stunden dauern können.
Da helfen ohl nur sog. Message Driven Beans.
Denn selbst wenn du norm. SessionBeans (Stateless/Stateful) wird der Timeout immer ein Problem sein.
 

musiKk

Top Contributor
Gut, danke für das Stichwort. Dann werde ich mich mal nach entsprechender Literatur umsehen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Berechnungen auslagern Allgemeines EE 13
thor_norsk Glassfish Server unter Windows startet nicht! Allgemeines EE 20
L Tcp-IP Server an Rest Schnittstelle Allgemeines EE 20
4a61766120617274697374 Managed Server im J2EE Umfeld Allgemeines EE 0
B Integrierte Datenbank in Wildfly Server Allgemeines EE 2
N wildfly | jax-ws | Server mit WS-Reliable Messaging Allgemeines EE 0
N WebService WAR-File auf Tomcat-Server Allgemeines EE 1
E Wie kann ich über einen Suchfeld in Java Server Pages nach Datenbankinhalten suchen? Allgemeines EE 11
B Ordner von Client an Server senden Allgemeines EE 2
N JBOSS7 server.log rotieren Allgemeines EE 3
J Client Request vom Server aus. Allgemeines EE 2
P Subprozess auf Application Server ausführen Allgemeines EE 6
P Context and Dependency Injection (CDI) ohne Server Allgemeines EE 6
S Jboss Server Allgemeines EE 5
F Gesucht: Gratis Server für Java Entwickler Allgemeines EE 4
T "normales" Java Programm auf einen Server laufen lassen Allgemeines EE 3
Evil-Devil Server/Tech-Empfehlung für Web-App? Allgemeines EE 12
Y Jasperreport Pfadprobleme am Server Allgemeines EE 11
F Java EE Server nutzung kostenlos an Schule? (zB. mit Glassfish) Allgemeines EE 6
T MS SQL Server, GlassFish, JDBC Allgemeines EE 2
G XML vom Server zum Client Allgemeines EE 4
T The server does not support version 3.0 of the J2EE Web module specification. Allgemeines EE 6
MQue Datei vom Server downloaden Allgemeines EE 2
S Unterschied zwischen Tomcat und Application Server? Allgemeines EE 3
P Eclipse Tomcat Plugin funktioniert nicht mit externem TC-Server? Allgemeines EE 4
MQue Server Pfad Allgemeines EE 17
MQue Server -> Client zyklische Daten senden Allgemeines EE 20
MQue Application Server Allgemeines EE 61
GFEMajor EJB auf externem Server aus GWT aufrufen Allgemeines EE 13
N erstes Java EE Projekt - Server/ EJB-Verbindung-Anfängerfage Allgemeines EE 17
H Server VM warning: bailing out to foreground collection Allgemeines EE 1
K Java Application Server + ganttproject *.jar Anwendung Allgemeines EE 6
K Sriplets & Servlets: Offline Projekt auf Server realisie Allgemeines EE 2
B Welchen Applikation-Server verwendet ihr? Allgemeines EE 6
A Windows 2003 Server, ActivDirectory,Zertifikatslösung mit J? Allgemeines EE 2
M Bibliotheken ins Projekt oder auf den Server stellen? Allgemeines EE 4
S Suche gutes JSF(Java Server Faces)-Tutorial Allgemeines EE 2
flashfactor Gibt es ein Case Management für Java Application Server? Allgemeines EE 6
E Portal Server Evaluation Allgemeines EE 3
M Überblick verloren, viele Frameworks, Server & Co Allgemeines EE 3
G Deployen am JBoss Server Allgemeines EE 14
M Objektübergabe von Client zum Server Allgemeines EE 11
M Java Application Server in einem ungesunden Zustand Allgemeines EE 4
S Java Server Faces & Google Web Toolkit verheiraten ? Allgemeines EE 2
M "Auto Client-Request" oder Server-Push oder Ajax – Allgemeines EE 2
R Jboss-Server mit Beispielanwendung füttern Allgemeines EE 2
M probleme mit client server kommunikation Allgemeines EE 3
I Sun App Server JDBC MySQL Allgemeines EE 2
D Servlet Problem über Server Allgemeines EE 26
L Tomcat auf Windows Server 2003 Allgemeines EE 10
M datei liste (jsp,html) von einem Server Allgemeines EE 4
W Eine Form an einen fremden Server schicken. Allgemeines EE 3
N Wie heisst das was der Client beim Http Server anfragt? Allgemeines EE 6
karambara weiterleiten zu url (nicht auf dem eigenen server) Allgemeines EE 1
K STRUTS The server encountered an internal error Allgemeines EE 5
D Eure Meinung über Internal Server Error Allgemeines EE 2
X Sun Application Server 9 - EJB3 Zugriffsproblem Allgemeines EE 2
haomomo *.do URLs dont work in apache web server+tomcat Allgemeines EE 3
S Verständnisproblem: WebSphere und HTTP Server Allgemeines EE 2
G properties file im J2EE Server - wo wird genau gesucht? Allgemeines EE 6
R Embedded WebService-Server Allgemeines EE 4
N Einbindung einer Bean in eine JSP (Tomcat-Server 5.5.x) Allgemeines EE 2
clemson Ordner auf Linux-Server erstellen --> Rechteproblem Allgemeines EE 5
C JBoss Server unter Eclipse 3.1 Allgemeines EE 2
TRunKX Wie kriege ich die Auswahl in meinen Server Request? Allgemeines EE 7
clemson [Struts] Validierung server-seitig bringt StackOverflowError Allgemeines EE 5
K Java Server Pages und Images Allgemeines EE 10
W Servlet killt Server? Allgemeines EE 7
G Application Server! Gibt es eine grundsätzliche Architektur? Allgemeines EE 9
M Übersicht über Application Server Allgemeines EE 3
B Sun Application Server 8 --- Nichtsaussagende Fehlermeldung Allgemeines EE 2
K Virtueller Server <> Root Server Allgemeines EE 3
B Was kostet ein Application Server Allgemeines EE 18
K Kostenloser Portal Server Allgemeines EE 2
K Sun Application Server - Servlets laufen nicht Allgemeines EE 2
E Web-, EJB-Container - Application Server Allgemeines EE 6
W Java-APIs in Java ServerPages, Java Server Faces ? Allgemeines EE 2
J server ignoriert jsp code Allgemeines EE 4
T Servlets und Dateizugriff auf dem Server Allgemeines EE 5
T JSP: Eingaben als *.txt auf dem Server Speichern Allgemeines EE 14
T Textdateien mit JSP auf dem Server speichern ? Allgemeines EE 2
N Server mit Servlet- und JSP-Unterstützung Allgemeines EE 5

Ähnliche Java Themen

Neue Themen


Oben