Added a check to try and detect the case where a server and

a client are running on the same instance.  This should cover
99% of the cases where this would come up... and the others
can't really use this service anyway and so must disable it.
cleanup_build_scripts
Paul Speed 9 years ago
parent 4b2f361026
commit dfe4b083f0
  1. 22
      jme3-networking/src/main/java/com/jme3/network/message/SerializerRegistrationsMessage.java

@ -94,7 +94,7 @@ public class SerializerRegistrationsMessage extends AbstractMessage {
public static Registration[] compiled;
private static final Serializer fieldSerializer = new FieldSerializer();
private Registration[] registrations;
private Registration[] registrations;
public SerializerRegistrationsMessage() {
setReliable(true);
@ -132,7 +132,25 @@ public class SerializerRegistrationsMessage extends AbstractMessage {
Serializer.setReadOnly(true);
}
public void registerAll() {
public void registerAll() {
// See if we will have problems because our registry is locked
if( Serializer.isReadOnly() ) {
// Check to see if maybe we are executing this from the
// same JVM that sent the message, ie: client and server are running on
// the same JVM
// There could be more advanced checks than this but for now we'll
// assume that if the registry was compiled here then it means
// we are also the server process. Note that this wouldn't hold true
// under complicated examples where there are clients of one server
// that also run their own servers but realistically they would have
// to disable the ServerSerializerRegistrationsServer anyway.
if( compiled != null ) {
log.log( Level.INFO, "Skipping registration as registry is locked, presumably by a local server process.");
return;
}
}
for( Registration reg : registrations ) {
log.log( Level.INFO, "Registering:{0}", reg);
reg.register();

Loading…
Cancel
Save