Wir geifert 6.3.0Final auf Weblogic 12.2.1 in einer JavaEE 7-Anwendung verwenden. Wenn unsere Anwendung zum ersten Mal bereitgestellt wird, sehen wir 8 Threads namens "drools-worker-X", wobei X zwischen 1 und 8 liegt (auf einer 4-Core-CPU mit HT). Jetzt, wenn wir die Anwendung erneut bereitstellen, bleiben die 8 Threads im Zustand "Park" und es werden 8 neue Threads erstellt (wiederum von 1 bis 8 nummeriert). Dies wird bei jeder erneuten Implementierung fortgesetzt.geifert ThreadPoolExecutor in Java EE 7-Anwendung führt zu Problemen auf redeploy
Wie wir die Klasse ExecutorProviderImpl im Paket org.drools.core.concurrent festgestellt haben, erstellt ein neuer ThreadPoolExecutor mit einem corePoolSize und maxPoolSize beide auf die Anzahl der CPU-Kerne und das Timeout auf 60s gesetzt. Sobald wir eine bestimmte Anzahl von Umsetzungen durchgeführt haben, wird die JVM langsam und unsere Anwendung läuft nicht mehr richtig.
Gibt es irgendeine Art und Weise richtig, diese Arbeitsthreads heruntergefahren, wenn unsere Anwendung heruntergefahren?
Sie fangen mehr Fische, wenn Sie den Titel Ihrer Frage ändern, um Leuten zu erzählen, worum Sie bitten. Ich kann nur raten, weil ich EE oder Drools nicht kenne, aber ich denke etwas wie "Wie man Drools Anwendung in ... umsetzt" oder "wie man ExecutorProviderImpl sicher in einer Anwendung benutzt, die ..." " Wenn Sie –
ThreadPoolExecutor erhalten, können Sie Herunterfahren auf diese Weise: http://stackoverflow.com/questions/36644043/how-to-forcefully-shutdown-java-executorservice/36644320#36644320 –
Als geifert ist dritter und nicht unsere eigenen Wir haben nur begrenzten Einfluss darauf, wie die Threads erstellt und heruntergefahren werden. Die Frage war eher die Drools-Leute, ob ihre Software sicher in einer Java-EE-7-Umgebung verwendet werden kann. Was wir bisher erfahren haben, ist, dass dies nicht der Fall ist. – phivo