2017-06-12 2 views
1

ich den FehlerKann nicht Sicherheitskontext von geplanter Aufgabe bekommt

org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task. 

java.lang.SecurityException: No security context bound to the current thread 

mit einer geplanten Aufgabe auf dem Kernmodul eine Aufgabe einmal bei Start der Anwendung auszuführen:

<task:scheduled-tasks scheduler="scheduler"> 
    <task:scheduled ref="app_OlapService" method="initialize" fixed-rate="9223372036854775807"/> 
</task:scheduled-tasks> 

I habe sowohl die @Authenticated-Annotation als auch die authentication.begin() für die injected Authentication-Instanz ausprobiert.

Es sieht aus wie ein Fehler ausgelöst durch die Planung allein, Ich habe auch den gleichen Fehler mit einer leeren Methode Körper.

Ich bin auch offen für alternative Ansätze, wenn man bedenkt, dass ich eine Transaktion verwenden muss und @PostConstruct AppContext.Listener erlauben mir nicht.

Antwort

1

Vielleicht rufen Sie eine Methode eines Dienstes auf. Solche Aufrufe werden abgefangen und auf das Vorhandensein einer gültigen Benutzersitzung überprüft, sodass sie bereits zum Zeitpunkt des Aufrufs existieren sollten. Es funktioniert, wenn ein Dienst von einem Client oder von einem bereits authentifizierten Middleware-Code aufgerufen wird.

In Ihrem Fall würde ich empfehlen, Logik vom Dienst zu einer verwalteten Bean zu extrahieren und sie sowohl vom Dienst als auch vom Scheduler aufzurufen.

Wie für AppContext.Listener, in der applicationStarted() Methode können Sie tun, was auch immer Sie wollen, einschließlich der programmatischen Transaktionsverwaltung.

Verwandte Themen