Search the FirstSpirit Knowledge Base
Hallo,
ich habe heute auf Version 4.2.437 upgedated. Dabei ist mir aufgefallen, dass in der uninstalling Methode eines Services keine Connection mehr zur Verfügung steht.
Hintergrund ist der, dass wir in einigen Modulen während der Installation automatisch Aufträge in die Auftragsverwaltung schreiben.
Beim uninstalling sopllten diese dann auch wieder gelöscht werden.
Um an den ScheduleStorage zu kommen rufe ich
ScheduleStorage scheduleStorage = environment.getConnection().getService(AdminService.class).getScheduleStorage();
auf. Debugging hat ergeben, dass an dieser Stelle environment.getConnection() null zurück liefert und somit eine NullPointerException geworfen wird.
Interessant ist auch, dass im LogFile einige Zeilen zuvor ein Disconnect Eintrag erscheint (s.u.).
Ist das wirklich so beabsichtigt, dass man in der uninstalling Methode keinen zugriff mehr auf die Connection hat?
Oder hat sich da ein Bug eingeschlichen?
MfG
Sebastian Kochhan
Auszug aus dem LogFile:
28 Apr 2011 15:12:24 DEBUG [Queue[6:NIOSocketServer,BOUNDED]:ClientRequestHandler.ManagerCallWorker] [de.espirit.firstspirit.server.module.ServiceManagerImpl] [] stopping service 'ConfigurationService'...
28 Apr 2011 15:12:24 DEBUG [Queue[6:NIOSocketServer,BOUNDED]:ClientRequestHandler.ManagerCallWorker] [de.espirit.firstspirit.server.io.AbstractServerConnection] [] disconnect - de.espirit.firstspirit.server.io.ServerConnectionImpl@1565551
28 Apr 2011 15:12:24 INFO [Queue[6:NIOSocketServer,BOUNDED]:ClientRequestHandler.ManagerCallWorker] [de.espirit.firstspirit.server.sessionmanagement.SessionManagerImpl] [] close dummy session (ID=8290446994047343467, user=ConfigurationService)
28 Apr 2011 15:12:24 ERROR [Queue[6:NIOSocketServer,BOUNDED]:ClientRequestHandler.ManagerCallWorker] [de.espirit.firstspirit.server.event.EventManagerImpl] [] error occured during event handling!
java.lang.NullPointerException
at com.commerzbank.firstspirit.basis2.common.configuration.server.Basis2ServerConfigurationService.deleteScheduleEntries(Basis2ServerConfigurationService.java:855)
at com.commerzbank.firstspirit.basis2.common.configuration.server.Basis2ServerConfigurationService.uninstalling(Basis2ServerConfigurationService.java:225)
Die Methode wird erst seit 4.2.437 aufgerufen (Ticket #98315). Und ja, zu dem Zeitpunkt ist das Environment bereits geschlossen. Statt des Rückgabewertes "null" wäre da wohl eine Exception angebrachter gewesen (z.B. EnvrionmentAlreadyClosed). Hätte aber auch nichts daran geändert, das der von dir angedachte Anwendungsfall nicht umsetzbar wäre.
Wir werden daher wohl die Aufrufreihenfolge von "Schliessen der Connection" und "Aufruf von 'uninstall'" umdrehen. Die interne ID dafür werde ich (oder ein Kollege) dann hier posten. Stay tuned..
Hallo Herr Kochhan,
den Punkt habe ich aufgenommen. Die interne ID lautet: #99975.
Viele Grüße,
Sascha Rusch.
Hallo Herr Rusch,
wann können wir denn so in etwa mit einem Fix rechnen?
MfG
Sebastian Kochhan
Hallo Herr Kochhan,
ab FirstSpirit Version 4.2.439 wird eine Änderung enthalten sein, die das Schliessen der Connection vor dem Aufruf der uninstalling()-Methode verhindert. Somit sollte dann die Connection in der uninstalling()-Methode zur Verfügung stehen.
Eine Ergänzung: Um die NPE zu vermeiden können Sie die Connection auf Null prüfen, z. B.
final Connection connection = environment.getConnection();
if (connection != null) {
...
}
Viele Grüße,
Sascha Rusch
Hallo Herr Rusch,
wann ist denn voraussichtlich mit der Version 4.2.439 zu rechnen?
MfG
Sebastian Kochhan
Hallo Herr Kochhan,
die nächste Freigabe für einen FirstSpirit 4.2R4 Build ist für Ende Juni geplant.
Viele Grüße,
Andreas Knoor