Subprozess auf Application Server ausführen

P

polofan123

Gast
Hi,

Ich habe folgendes Problem : Ich versuche externe Programme (Skripte, jars usw.) von meinem Application server (glassfish 3.1.2) aus aufzurufen. Das mache ich mithilfe der "apache commons exec" Bibliothek.

1) Wie bekomme ich es am besten hin zu verhindern, dass zu viele dieser Prozesse aufgerufen werden und mein Server damit überlastet wird.
Da der application server von den extern aufgerufenen Prozessen überhaupt nichts weiß, kann er auch nicht wissen wann sie beendet und das Ergebnis zur Verfügung steht oder ob sie gar blockieren und abgebrochen werden müssen.
Ich dachte deshalb daran EJBs zu verwenden um die Prozesse aufzurufen. Ein EJB würde dann einen Prozess aufrufen und danach auf das Ergebnis warten. In der Zeit würde es einfach sinnlos existieren. Zusätzlich beschränke ich die Anzahl der EJB Instanzen auf z.B 10 und infolge dessen können auch nie mehr als 10 Prozesse gestartet werden. Gibt es vielleicht eine sinnvollere Lösung?

2) Um zu erkennen ob ein extern gestarteter Prozess blockiert bietet apache commons exec einen watchdog an, der einen Prozess nach blockieren von X Sekunden beendet. Dieser watchdog ist aber ein Thread und Threads sollten ja im application Server nicht gestartet werden, da dieser sie nicht verwalten kann bzw. nicht einmal von deren Existenz weiß. Gibt es eine Möglichkeit dem Application Server die Existenz eines solchen Threads mitzuteilen?


ich wäre für jede Art von Hilfe oder Diskussionsbeiträgen dankbar ;)
 

FArt

Top Contributor
Ich würde sagen, Prozesse aus einem EJB zu forken ist gegen die Spec ;-)

Du könntest es evtl. über ein Singleton EJB mit eigene Synchronisation regeln und dort dann deine Logik bgzl. der Begrenzung der Prozesse / Queueing realisieren.
 

freez

Top Contributor
Wie wäre es denn einen eigenen Handler für deine Prozesse zu schreiben, in denen du dann einschränken oder frei geben kannst wie du willst. Starten und Beenden könntest du ihn dann z.B. über einen ServletContextListener.

Solltest du Spring einsetzen, so bietet der Spring Scheduler auch interessante Möglichkeiten.
 

FArt

Top Contributor
Wie wäre es denn einen eigenen Handler für deine Prozesse zu schreiben, in denen du dann einschränken oder frei geben kannst wie du willst. Starten und Beenden könntest du ihn dann z.B. über einen ServletContextListener.

Solltest du Spring einsetzen, so bietet der Spring Scheduler auch interessante Möglichkeiten.

Könntest du genauer ausführen, wie dieser Handler realisert werden soll, so dass er aus EJBs heraus genutzt werden kann?
Wieso ServletContextListener? Die Frage dreht sich (bisher) um EJBs und Applicationserver.
 

freez

Top Contributor
Nun, der TO möchte ja EJB's missbrauchen um externe Prozesse zu starten (die ja wegen "externe Prozesse" wenig mit den EJBs auf dem AppServer selbst zu tun haben)

In einem AppServer kann man doch einen ServletContextListener registrieren, bei dem bei AppStart und Ende entsprechende Methoden aufgerufen werden URL.

Hier könnte der TO einen eigenen Handler entwickeln, der die externen Prozesse aufruft und diese natürlich auch vollständig kontrollieren kann (WatchDog, Anzahl Threads usw.). Gestartet würde der Handler in der [c]contextInitialized()[/c] Methode und beendet [c]contextDestroyed()[/c] Methode.

Ich setze hierbei vorraus, das der TO seine Prozesse (Jars / Scripts etc.) per Runtime.exec() startet. Sollten die Prozesse im Context der App laufen, dann müsste man prüfen, ob das überhaupt geht.
 

freez

Top Contributor
Vielleicht noch ein Hinweis: Man kann für solche Sachen natürlich auch die Bestriebssystemspezifischen Tools verwenden (Scheduled Task => Win / Cron => Linux).

Allerdings stand auch ich vor dem Problem, dass die Anwendung einfach zu installieren sein sollte und diese Asynchronen Tasks (E-Mail versenden, DB aufräumen) waren mit der Anwendung eng verknüpft, sodass ich mich damals für den Spring Scheduler entschieden habe und diese Tasks auf dem Tomcat habe laufen lassen.

Bei externen Prozessen, die über Runtime.exec gestartet werden, müsste man prüfen, ob man die auch killen kann, ohne den App Server mit zu killen. Dann sollte es auch kein Problem machen, wenn man mal so ein Script abschiessen muss. Aber ich würde an der Stelle wohl cron, oder die Scheduled Tasks bevorzugen.
 
P

polofan123

Gast
Also am liebsten wäre es mir ja gewesen dazu direkt den Threadpool des Glassfish Server zu gebrauchen. Dann würde der Server das Management meiner Threads übernehmen. Hinweis : Die Prozesse müssen nicht zwingend aus einem EJB heraus gestartet werden und deine Möglichkeit einen eigenen Handler zu schreiben ist natürlich immer da aber ich könnte mir die ganze Arbeit dafür sparen wenn ich Zugang zum Application Server Threadpool hätte :/
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Tomcat Application Path bestimmen Allgemeines EE 0
B Logging (log4j) in JAVA EE application - WildFly Allgemeines EE 15
L Spring REST Application (Data Retrive) API und Architectur hilfe Allgemeines EE 11
S FAIL - Deployed application at context path /Address but context failed to start Allgemeines EE 1
T Fertiges html javascrip css template in java EE application Allgemeines EE 0
Y Caching Application Allgemeines EE 20
S Rich Client Application mit Eclipse/WebLogic/EclipseLink/EJB3 Allgemeines EE 2
G Login into Web Application Allgemeines EE 9
P Nur ein User für Web Application Allgemeines EE 11
J Wicket-Projekt: "Unable to create application..." Allgemeines EE 2
MQue Java Web- Application -> MVC Allgemeines EE 4
D Wohin mit Resourcen (Bilder, txt Dateien) im Application Client Allgemeines EE 3
S Unterschied zwischen Tomcat und Application Server? Allgemeines EE 3
MQue Application Server Allgemeines EE 61
K Glassfish Application Client Allgemeines EE 4
N Objekte zwischen zwei Application Contexts austauschen Allgemeines EE 19
K Java Application Server + ganttproject *.jar Anwendung Allgemeines EE 6
J prozesse aus der application-bean threadfähig? Allgemeines EE 4
flashfactor Gibt es ein Case Management für Java Application Server? Allgemeines EE 6
M Java Application Server in einem ungesunden Zustand Allgemeines EE 4
F Application in HttpServlet abfragen? Allgemeines EE 5
X Sun Application Server 9 - EJB3 Zugriffsproblem Allgemeines EE 2
H Test Application für Tomcat Allgemeines EE 3
L xpetstore ejb sample application läuft nicht :-((( Allgemeines EE 7
T statische Methoden versus Application-Bean Allgemeines EE 2
K Datei schreiben in einer Web-Application Allgemeines EE 3
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
M Debugging mit Eclipse / Web-Application Allgemeines EE 2
B Was kostet ein Application Server Allgemeines EE 18
K Sun Application Server - Servlets laufen nicht Allgemeines EE 2
E Web-, EJB-Container - Application Server Allgemeines EE 6
R Problem beim hochladen einer Web Application Allgemeines EE 16
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 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
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
GFEMajor EJB auf externem Server aus GWT aufrufen Allgemeines EE 13
musiKk Langlebige Berechnungen auf Server ausführen Allgemeines EE 5
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 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
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
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
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
K Virtueller Server <> Root Server Allgemeines EE 3
K Kostenloser Portal Server Allgemeines EE 2
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

Ähnliche Java Themen

Neue Themen


Oben