01: /**
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * 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: */package org.apache.geronimo.clustering;
17:
18: /**
19: * Represents a clustered invocation.
20: * <p>
21: * A clustered invocation is intended to be a thin wrapper around an actual invocation enhancing this latter with
22: * an association to a local SessionManager. For instance, an HTTPRequest is an actual invocation.
23: * <p>
24: * A clustered invocation is interposed between a client and the Session he wants to access to provide cluster wide
25: * access serialization to the requested Session. A clustered invocation is associated to a local SessionManager, even
26: * if no contract captures such a relationship. When a clustered invocation is executed one of the two following
27: * scenarios happen:
28: * <ul>
29: * <li>the clustered invocation is executed locally. A local execution implies that the local SessionManager associated
30: * to the clustered invocation is owning the Session (may be after a migration); or</li>
31: * <li>the clustered invocation is executed remotely on the Node where the Session is being owned.</li>
32: * </ul>
33: *
34: * @version $Rev$ $Date$
35: */
36: public interface ClusteredInvocation {
37:
38: /**
39: * Invokes the clustered invocation.
40: *
41: * @throws ClusteredInvocationException Thrown when the invocation cannot be successfully executed. This may
42: * be either due to the fact that the actual invocation has failed or the requestedSessionId is unknown by
43: * the associated local SessionManager and its remote peers.
44: */
45: void invoke() throws ClusteredInvocationException;
46:
47: /**
48: * Gets the sessionId of the Session bound to the invocation represented by this instance.
49: *
50: * @return sessionId of the targeted Session.
51: */
52: String getRequestedSessionId();
53:
54: }
|