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
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