You must call Session.close() when using the Java API and Session.Close() when using the .NET API. Both are mandatory calls that ensure that your session is terminated properly and put into the CLOSED state. Both the Java and .NET APIs try to close the session in the cleanup methods for the Session object. However, since garbage collection is non-deterministic, your session could be in either the ABORTED or CLOSED state if you neglect to close your session.