As in B4J 5.80 Jetty has been updated to 9.4.6 (which contains an important change in the internal Session framework), you will need to update some code in StartServer() and StartServerHTTP2() in the ABMApplication module.
In pre B4J 5.80 with Jetty 9.3.x it was:
must be changed to this in B4J 5.80+ with Jetty 9.4.6:
@mindful and @stanmiller:
Can you confirm this last line is ok? I think it is now needed as in 9.4.6 there is a default session scavenger running every 10 minutes. However, as we have our own scavenger running too, this interval may be to short.
I have tested quite a bit the updated jServer lib, but if ABMaterial users find some other problems, please post them in this topic.
Note: I'm on vacation from the 19th of juli and back at the 27th and have very limited internet capabilities in this period.
Alwaysbusy
In pre B4J 5.80 with Jetty 9.3.x it was:
B4X:
Dim joServer As JavaObject = srvr
joServer.GetFieldJO("server").RunMethod("stop", Null)
joServer.GetFieldJO("context").RunMethodJO("getSessionHandler", Null).RunMethodJO("getSessionManager", Null).RunMethodJO("getSessionCookieConfig", Null).RunMethod("setMaxAge", Array(31536000)) ' 1 year
'NEW FEATURE! Each App has its own Session Cookie
joServer.GetFieldJO("context").RunMethodJO("getSessionHandler", Null).RunMethodJO("getSessionManager", Null).RunMethodJO("getSessionCookieConfig", Null).RunMethod("setName", Array(ABMShared.AppName.ToUpperCase))
joServer.GetFieldJO("server").RunMethod("start", Null)
must be changed to this in B4J 5.80+ with Jetty 9.4.6:
B4X:
Dim joServer As JavaObject = srvr
joServer.GetFieldJO("server").RunMethod("stop", Null)
joServer.GetFieldJO("context").RunMethodJO("getSessionHandler", Null).RunMethodJO("getSessionCookieConfig", Null).RunMethod("setMaxAge", Array(31536000)) ' 1 year
' NEW FEATURE! Each App has its own Session Cookie
joServer.GetFieldJO("context").RunMethodJO("getSessionHandler", Null).RunMethodJO("getSessionCookieConfig", Null).RunMethod("setName", Array(ABMShared.AppName.ToUpperCase))
joServer.GetFieldJO("server").RunMethod("start", Null)
' This setting is with reservation until confirmation
Dim secs As Long = ABMShared.CacheScavengePeriodSeconds ' must be defined as a long, else you get a 'java.lang.RuntimeException: Method: setIntervalSec not matched.' error
joServer.GetFieldJO("context").RunMethodJO("getSessionHandler", Null).RunMethodJO("getSessionIdManager", Null).RunMethodJO("getSessionHouseKeeper", Null).RunMethod("setIntervalSec", Array As Object(secs))
@mindful and @stanmiller:
Can you confirm this last line is ok? I think it is now needed as in 9.4.6 there is a default session scavenger running every 10 minutes. However, as we have our own scavenger running too, this interval may be to short.
I have tested quite a bit the updated jServer lib, but if ABMaterial users find some other problems, please post them in this topic.
Note: I'm on vacation from the 19th of juli and back at the 27th and have very limited internet capabilities in this period.
Alwaysbusy