Opcode
other than those specified in the protocol specification, or with an
Opcode
that defines a message that should only be sent to
a client, or the message is malformed in other ways, the server will
disconnect the client session that was the origin of the message;LOGIN_REQUEST
, the message
will be ignored;LOGIN_REQUEST
that specifies the
same identity as an existing user, the behavior of the server is
determined by the value of the
com.sun.sgs.impl.service.session.allow.new.login
property. If
the value of that property is false
(the default value) the
new login is not permitted and the server responds with a
LOGIN_FAILURE
. If the value of the property is
true
, the user's existing session is disconnected, and a new
login is allowed to proceed.RECONNECT_REQUEST Opcode
. The current implementation treats such a
request as an unknown Opcode
and will disconnect any client sending
such a request. Similarly, the current implementation of the Project Darkstar
server will not send messages beginning with the RECONNECT_SUCCESS
or RECONNECT_FALURE Opcodes
.
Information about managed objects that were modified and not marked for update is logged to the {@link java.util.logging.Logger Logger} named {@code com.sun.sgs.impl.service.data.DataServiceImpl.detect.modifications} at level {@link java.util.logging.Level#FINEST FINEST}. This logging is only performed if detection of modifications is enabled.
The API uses this approach to avoid an issue involving
the serialVersionUID
field. To guard
against serialVersionUID
mismatches, as well as to improve
performance, any class or interface that
extends Serializable
should declare a
serialVersionUID
field. Since public interfaces can only
declare public members, a public interface that
extends Serializable
would need to have a
public serialVersionUID
field, meaning that any classes
implementing the interface would inherit
its serialVersionUID
, and so would be prevented from
controlling their versioning separately. This issue does not crop up
for interfaces that do not extend Serializable, since they by
definition have a serialVersionUID
of 0
.
null
is not explicitly specified as an acceptable
value for a method parameter, then the method does not
permit null
to be passed as a value for that
parameter, and will throw a {@link java.lang.NullPointerException}
if null
is passed (though it is left unspecified
whether or not NullPointerException
takes precedence
over other types of exceptions that could also be thrown).
null
is not explicitly specified as an acceptable
value for a method to return, then the method is not permitted to
return null
.
null
is not explicitly specified as an acceptable
value for a given collection (e.g. {@link java.util.Collection},
{@link java.util.List}, or {@link java.util.Set}) to contain, then
the collection is not permitted to contain null
elements.
null
values generally
specify this at least in their parameter-level (i.e. @param
tag) or return value-level (i.e. @return
tag)
documentation.