Wo kann ich den Thread-Pool hinter den @ Asynchron-Aufrufen in Java EE 6 konfigurieren?

9

Ich habe kürzlich gelernt, dass ich einfach eine beliebige Session-Bean-Methode asynchron machen kann Hinzufügen der @Asynchronous Annotation.

z.

%Vor%

Ich weiß, dass Java EE 7 Concurrency Utilities hinzugefügt hat, aber In Java EE 6, wo ist die Thread-Pool-Konfiguration der @Asyncronous -Methoden? Gibt es eine Möglichkeit, eine Zeitüberschreitung festzulegen? Ist es ein fester Thread-Pool? eine im Cache gespeicherte? Was ist es Priorität? Ist es irgendwo im Container konfigurierbar?

    
Eran Medan 18.06.2013, 17:29
quelle

2 Antworten

3

Ich denke, Timeout konnte durch Aufruf von Future.cancel (boolean) von einer mit @Timeout annotierten Methode. Erfordert die Beibehaltung eines Verweises auf die Zukunft, die von der asynchronen Methode zurückgegeben wird, Singleton-ejb kann dafür verwendet werden.

%Vor%

Bearbeiten (neu unten):

In Glassfish können Sie den EJB-Pool konfigurieren, indem Sie die folgenden Attribute in der Admin-Konsole eingeben

  • Anfangs- und Mindestpoolgröße
  • Maximale Poolgröße
  • Poolgröße ändern
  • Pool-Leerlauf-Zeitlimit

Siehe Tuning des EJB-Pools

    
Aksel Willgert 19.06.2013, 09:41
quelle
1

Obwohl die Lösung, die ich gefunden habe, nur auf Java EE 7 / GlassFish 4.1 getestet wurde, denke ich, dass sie auch für GlassFish 3.x funktionieren sollte.

Auf java.net gibt es einen JIRA-Eintrag , in dem die verschiedenen Einstellungen aufgeführt sind. Wie Oracle den Stecker auf dieser Seite ziehen wird, werde ich hier den relevanten Beitrag zitieren (Formatierung hinzugefügt):

  

Die Konfiguration befindet sich in domain.xml, zum Beispiel

%Vor%      

Alle oben genannten Eigenschaften sind optional. Ihre Standardwerte:

%Vor%

Über diesen Thread habe ich auch einen Blogpost gefunden, der erklärt, wie Die Kern- und Max-Pool-Größe funktioniert. Zitat des wichtigen Punktes:

  

In der Vergangenheit hat SUN richtig erklärt: "Genau so ist es   sollte sich verhalten. Zuerst werden die Threads auf coreSize und dann auf die Warteschlange erweitert   wird verwendet, dann wenn die Warteschlange gefüllt ist, dann die Anzahl der Threads   erweitert von coreSize auf maxSize. Daher, wenn Sie eine unbegrenzte Warteschlange verwenden   der letzte Teil passiert nie. Dies ist alles beschrieben in der   Dokumentation. Wenn Sie eine unbegrenzte Warteschlange aber mehr Threads dann möchten   Erhöhen Sie die Kerngröße. Ansonsten überlegen Sie, ob eine beschränkte Warteschlange ist   besser geeignet für Ihre Bedürfnisse. "

    
Hein Blöd 09.11.2016 12:48
quelle