0

Ist eine Variable unter Grails (1.3.6) Controller Aktion und Klasse Variable threadsicher deklariert? d.hWird eine Variable unter Grails (1.3.6) Controller-Aktion und Klassenvariable threadsicher deklariert?

class TestController { 
     String y //Is y thread-safe? 
    def testAction = { 
     String x //Is x thread-safe? 
    } 

} 
+0

Controller sind Anfrage Bereich (neue y für jede Anfrage). und x ist nur eine lokale var – cfrick

+0

In Grails 1.3.6 geht es dir gut. Seit Grails 1.4.x ändert jedoch die standardmäßig generierte Konfiguration für Ihre Grails-App den Bereich der Controller in "Singleton" oder "Application", was Ihren "Y" -Thread riskant macht. Du solltest das sowieso nicht tun. Fügen Sie den Controllern oder Services keinen Status direkt hinzu. – billjamesdev

Antwort

0

Als cfrick reagiert, Controller sind Anfrage scoped und alle Variablen werden bei jedem Aufruf neu eingestellt werden, so dass alle von ihnen THREAD sind.
Je nachdem, was Sie erreichen müssen, würde ich vorschlagen Sitzungsvariablen oder verwenden Sie einen Dienst
(standardmäßig sind Dienste Singleton - nur eine Instanz des Dienstes existiert jemals).

+0

Vielleicht meintest du "Controller sind Anfragebereich und alle Variablen werden bei jedem Anruf zurückgesetzt, so dass alle von ihnen Threadssafe sind"? Wenn für jede Anforderung eine neue Instanz des Controllers erstellt wird, kann der Wert nicht durch eine andere Anforderung verfälscht werden. – billjamesdev

+0

@billjamesdev ja ja ja .. Bearbeiten Sie es jetzt. Danke fürs bemerken. :) –