KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > geronimo > clustering > Session


1 /**
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17 package org.apache.geronimo.clustering;
18
19 import java.util.Map JavaDoc;
20
21 /**
22  * Represents a clustered session.
23  * <p>
24  * A Session is created by a SessionManager and is uniquely identified by its sessionId. More accurately, this
25  * sessionId is unique within the set of SessionManagers from which this Session has been sourced. If two Sessions
26  * have the same sessionId, then a client can be sure that they have been created from two distinct set of
27  * SessionManagers.
28  * <p>
29  * A Session provides Map like contracts to manipulate state information. State information must be Serializable as
30  * it may be marshalled automatically by the underpinning local SessionManager. At any given point of time, a Session
31  * is uniquely "instantiated" once cluster wide. Also, cluster wide accesses to a given Session are
32  * ensured to be serialized by the set of SessionManagers from which the Session has been sourced. The interposition
33  * of a ClusteredInvocation between a client and the Session this client would like to access enforces unique
34  * instantiation and access serialization cluster wide for a given Session.
35  *
36  * @version $Rev$ $Date$
37  */

38 public interface Session {
39     
40     /**
41      * Gets the sessionId.
42      *
43      * @return sessionId.
44      */

45     String JavaDoc getSessionId();
46
47     /**
48      * Map like contract to manipulate state information.
49      */

50     Object JavaDoc addState(String JavaDoc key, Object JavaDoc value);
51
52     /**
53      * Map like contract to manipulate state information.
54      */

55     Object JavaDoc getState(String JavaDoc key);
56
57     /**
58      * Map like contract to manipulate state information.
59      */

60     Object JavaDoc removeState(String JavaDoc key);
61     
62     /**
63      * Map like contract to manipulate state information.
64      * <p>
65      * The returned Map is mutable and is backed by the session.
66      */

67     Map JavaDoc getState();
68     
69     /**
70      * Releases the session.
71      * <p>
72      * When a Session is released, it is released from the underlying set of SessionManagers. In other words, its
73      * sessionId is unknown and its state is permanently lost. After the release of a Session, the behavior of
74      * the other methods is undefined.
75      */

76     void release();
77     
78 }
79
Popular Tags