Schmatrick
Returning Observer

GuiScriptContext Sessions

Hallo zusammen, 

habe folgendes Problem mit meinem guiScriptContext.
Im Code durchlaufe ich alle Projekte um bestimtme Absatzvorlagen zu zählen (~ 40 Projekte).

 

 

 

final GuiScriptContext guiScriptContext = (GuiScriptContext) context.get("context");
final SpecialistsBroker broker = guiScriptContext.getConnection().getBroker();
final AdminService adminService = broker.requireSpecialist(ServicesBroker.TYPE).getService(AdminService.class);
final Project[] projects = adminService.getProjectStorage().getProjects();

 

 

 


Die geöffneten Session werden danach leider nicht automatisch geschlossen (Für jedes Projekt wird eine Session geöffnet), daher habe ich versucht das "windowClosing" Event zu erweitern des JDialogs.


 

 

 

            @Override
            public void windowClosing(WindowEvent e) {
                try {
                    guiScriptContext.getConnection().disconnect();
                } catch (IOException e1) {
                    guiScriptContext.logError("Could not close sessions");
                }
            }

 

 

 

 

Hiermit werden die Sessions geschlossen, aber leider hängt der SA sich danach komplett auf.
Kann mir jemand verraten wie ich die Sessions ordentlich schließen kann, ohne das irgendwas auseinander fliegt?

Viele Grüße,
Patrick Wittke

0 Kudos
1 Reply
hoebbel
Crownpeak employee

Hallo Patrick,

werden denn die Sessions geschlossen, wenn Du den SiteArchitect schließt? Und/oder nach 20 Minuten Wartezeit?

Anmerkung: Mit den FirstSpirit Versionen 2022.9 und 2022.10 wird es hier einige Anpassungen geben, die das geschilderte Verhalten möglicherweise korrigieren. Jedenfalls konnte ich bei eine entsprechenden lokalen Test mit 2022.10 das Problem mit diesem Skript hier nicht reproduzieren (weder als Serverskript noch in einem SiteArchitect)

import de.espirit.firstspirit.access.AdminService;
import de.espirit.firstspirit.access.ServicesBroker;

broker = context.getConnection().getBroker();
adminService = broker.requireSpecialist(ServicesBroker.TYPE).getService(AdminService.class);
projects = adminService.getProjectStorage().getProjects();
for (project:projects) {
	context.logInfo("Projekt: " + project.getName() + " / Revision: " + project.getRevision(new Date()));
}

Viele Grüße
Holger

0 Kudos