ClassDescriptionAn implementation of CSAF relying on a shared SQL database to store the necessary information in a cluster setting.Perform the DB-setup/migrations that
ClusterStoreAndForward_SQLneeds, using Flyway.Defines the String and Binary datatypes for some databases.Incoming (Client-to-Server) Send, Request and Replies (Resolve and Reject) handler.If the
MatsSocketServer.MatsSocketEnvelopeDto.msg-field is of this magic type, the String it contains - which then needs to be proper JSON - will be output directly.A
MatsSocketServer.MatsSocketEnvelopeWithMetaDtowill be Serialized (made into object) with the "msg" field handled specially: If it is any other class than
MatsSocketStatics.DirectJson, default handling ensues (JSON object serialization) - but if it this particular class, it will output the (JSON) String it contains directly.A
MatsSocketServer.MatsSocketEnvelopeWithMetaDtowill be Deserialized (made into object) with the "msg" field directly to the JSON that is present there (i.e.When trying to send messages over WebSocket and get an IOException, we do not have many options of handling - the socket has probably closed.Provides several hacks to get the Remote Address for different Servlet Containers implementing JSR 356 Java API for WebSockets, as that standard does not specify a method for it.Trick to make ThreadPoolExecutor work as anyone in the world would expect: Have a constant pool of "corePoolSize", and then as more tasks are concurrently running than threads available, you increase the number of threads until "maxPoolSize", at which point the rest go on queue.Handles async sending of not-"information bearing messages", that is, messages that are idempotent.