Răsfoiți Sursa

Broke out the Serializer's static initializer into a separate initialize()
static method. This allows servers to completely reset the Serializer's
registry when restarting the server in the same JVM instance.

Paul Speed 8 ani în urmă
părinte
comite
4952ad0cb5

+ 14 - 0
jme3-networking/src/main/java/com/jme3/network/serializing/Serializer.java

@@ -77,6 +77,20 @@ public abstract class Serializer {
 
     // Registers the classes we already have serializers for.
     static {
+        initialize();
+    }
+    
+    public static void initialize() {
+
+        // Reset all of the inexes and tracking variables just in case
+        idRegistrations.clear();
+        classRegistrations.clear();
+        registrations.clear();        
+
+        nextAvailableId = -2; // historically the first ID was always -2
+
+        // Obviously need to be unlocked...
+        locked = false;
 
         // Preregister some fixed serializers so that they don't move
         // if the list below is modified.  Automatic ID generation will