geronimo-scm mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jstrac...@apache.org
Subject svn commit: r369280 - /geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/
Date Sun, 15 Jan 2006 23:36:20 GMT
Author: jstrachan
Date: Sun Jan 15 15:36:05 2006
New Revision: 369280

URL: http://svn.apache.org/viewcvs?rev=369280&view=rev
Log:
A spike for a simple API for working with stateful session bean state from OpenEJB, ServiceMix
or Tuscany; its very simple to use & has all thats required from the perspective of the
client; we should be able to layer this on pretty much any implementation technology like
WADI et al

Added:
    geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/Locator.java
    geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/NoSuchSessionException.java
    geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/Server.java
    geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/Session.java
    geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionAlreadyExistsException.java
    geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionDestroyedException.java
    geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionException.java
    geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionLocation.java
    geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionNotLocalException.java
    geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionNotMovableException.java
    geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/WriteLockTimedOutException.java
Modified:
    geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/package.html

Added: geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/Locator.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/Locator.java?rev=369280&view=auto
==============================================================================
--- geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/Locator.java (added)
+++ geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/Locator.java Sun Jan
15 15:36:05 2006
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.session;
+
+/**
+ * This is the main API to locating where sessions are located, to create
+ * new sessions and to view the available servers. There is a single Locator per
+ * local {@link Server}.
+ * 
+ * @version $Revision: $
+ */
+public interface Locator {
+
+    /**
+     * Finds the session location which could be local or remote
+     */
+    public SessionLocation getSessionLocation(String clientID);
+
+    Session createSession(String sessionId) throws SessionAlreadyExistsException;
+
+    public Server[] getRemoteServers();
+
+    public Server getLocalServer();
+}

Added: geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/NoSuchSessionException.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/NoSuchSessionException.java?rev=369280&view=auto
==============================================================================
--- geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/NoSuchSessionException.java
(added)
+++ geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/NoSuchSessionException.java
Sun Jan 15 15:36:05 2006
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.session;
+
+/**
+ * An attempt was made to access an exception which does not exist.
+ * 
+ * @version $Revision: $
+ */
+public class NoSuchSessionException extends SessionException {
+
+    private static final long serialVersionUID = 4002448240048003002L;
+
+    public NoSuchSessionException(String sessionId) {
+        super("No such session ID: " + sessionId, sessionId);
+    }
+}

Added: geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/Server.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/Server.java?rev=369280&view=auto
==============================================================================
--- geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/Server.java (added)
+++ geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/Server.java Sun Jan
15 15:36:05 2006
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.session;
+
+/**
+ * Represents a logical server which is either the local server or a remote
+ * server.
+ * 
+ * @version $Revision: $
+ */
+public interface Server {
+
+    /**
+     * Returns the unique name of this server
+     */
+    String getName();
+
+    /**
+     * Returns the addresses on which you can communicate with the server which is
+     * required for redirecting or proxying requests for remote sessions
+     */
+    String[] getAddresses(String protocol);
+
+    /**
+     * Configures the available addresses that can be used to connect to this server
+     */
+    void setAddresses(String string, String[] strings);
+
+    /**
+     * Is this the local in-JVM server or a remote server
+     */
+    public boolean isLocalServer();
+
+}

Added: geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/Session.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/Session.java?rev=369280&view=auto
==============================================================================
--- geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/Session.java (added)
+++ geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/Session.java Sun Jan
15 15:36:05 2006
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.session;
+
+/**
+ * The state for a stateful session client which always exists in the local JVM; it is never
remote.
+ * 
+ * There is only one instance of this object in the system for a given session
+ * ID; even when using buddy groups to replicate session state there will only
+ * be one Session; the others are just backups of the serialized state (a
+ * byte[]) and not an actual usable Session object.
+ * 
+ * @version $Revision: $
+ */
+public interface Session {
+
+    /**
+     * Returns the Id of the session.
+     */
+    public String getSessionId();
+
+    /**
+     * Releases the session so that its changed state can be replicated to its
+     * buddies (once a write lock can be acquired as there may be concurrent
+     * access to this session).
+     * 
+     */
+    public void release();
+
+    /**
+     * Creates the state for the given key.
+     */
+    public void addState(String key, Object value);
+
+    /**
+     * This method assumes that the client will update the state object and so
+     * if you are using a state backup mechanism then this method call marks the
+     * entry as modified.
+     */
+    public Object getState(String key);
+
+    /**
+     * Removes the state entry for the given key (such as if an EJB stateful
+     * session bean is destroyed)
+     */
+    public Object removeState(String key);
+}

Added: geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionAlreadyExistsException.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionAlreadyExistsException.java?rev=369280&view=auto
==============================================================================
--- geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionAlreadyExistsException.java
(added)
+++ geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionAlreadyExistsException.java
Sun Jan 15 15:36:05 2006
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.session;
+
+/**
+ * An attempt was made to create a new session which was already created by another
+ * process or thread.
+ * 
+ * @version $Revision: $
+ */
+public class SessionAlreadyExistsException extends SessionException {
+
+    private static final long serialVersionUID = 7152083589480056760L;
+
+    public SessionAlreadyExistsException(String sessionId) {
+        super("The session already exists for ID: " + sessionId, sessionId);
+    }
+}

Added: geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionDestroyedException.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionDestroyedException.java?rev=369280&view=auto
==============================================================================
--- geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionDestroyedException.java
(added)
+++ geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionDestroyedException.java
Sun Jan 15 15:36:05 2006
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.session;
+
+/**
+ * An attempt was made to use a session that has already been destroyed.
+ * 
+ * @version $Revision: $
+ */
+public class SessionDestroyedException extends RuntimeException {
+
+    private static final long serialVersionUID = 7834900446243654015L;
+
+    private final String sessionId;
+
+    public SessionDestroyedException(String sessionId) {
+        super("The session is already destroyed: " + sessionId);
+        this.sessionId = sessionId;
+    }
+
+    public String getSessionId() {
+        return sessionId;
+    }
+
+}

Added: geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionException.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionException.java?rev=369280&view=auto
==============================================================================
--- geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionException.java
(added)
+++ geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionException.java
Sun Jan 15 15:36:05 2006
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.session;
+
+/**
+ * An exception occurred working with a given session.
+ * 
+ * @version $Revision: $
+ */
+public class SessionException extends Exception {
+
+    private static final long serialVersionUID = 1880705415197036320L;
+
+    private final String sessionId;
+
+    public SessionException(String message, String sessionId) {
+        super(message);
+        this.sessionId = sessionId;
+    }
+
+    /**
+     * Returns the Session Id that causes the exception
+     */
+    public String getSessionId() {
+        return sessionId;
+    }
+}

Added: geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionLocation.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionLocation.java?rev=369280&view=auto
==============================================================================
--- geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionLocation.java
(added)
+++ geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionLocation.java
Sun Jan 15 15:36:05 2006
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.session;
+
+/**
+ * Represents the location of a session which could be local or remote.
+ * 
+ * @version $Revision: $
+ */
+public interface SessionLocation {
+
+    /**
+     * Is the session local to this JVM so that it can be used directly or
+     * must the user redirect, proxy or move.
+     */
+    boolean isLocal();
+
+    /**
+     * Is this session movable.
+     */
+    boolean isMovable();
+
+    /**
+     * Returns the session ID.
+     */
+    String getSessionId();
+
+    /**
+     * Returns the server (JVM) where this session is currently located so that
+     * you can redirector proxy to the actual server where the session is hosted
+     * or maybe use some server metadata to make a decision if its worth moving
+     * it.
+     */
+    Server getServer();
+
+    /**
+     * Acquires the current session handle; you must release it when you have
+     * done.
+     * 
+     * NOTE this session object is not thread safe
+     * 
+     * @see Session#release()
+     */
+    Session getSession() throws SessionNotLocalException;
+
+    /**
+     * Moves the remote session to this JVM and acquires the current session;
+     * you must release it when you have done.
+     * 
+     * NOTE this session object is not thread safe
+     * 
+     * @see Session#release()
+     */
+    Session moveLocally() throws NoSuchSessionException, WriteLockTimedOutException, SessionNotLocalException,
+            SessionNotMovableException;
+
+    /**
+     * Destroys the session from the system
+     */
+    void destroy() throws SessionNotLocalException;
+
+}

Added: geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionNotLocalException.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionNotLocalException.java?rev=369280&view=auto
==============================================================================
--- geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionNotLocalException.java
(added)
+++ geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionNotLocalException.java
Sun Jan 15 15:36:05 2006
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.session;
+
+/**
+ * An attempt was mode to use local access to a session which is remote.
+ * 
+ * @version $Revision: $
+ */
+public class SessionNotLocalException extends SessionException {
+
+    private static final long serialVersionUID = -53844606425457569L;
+
+    public SessionNotLocalException(String sessionId) {
+        super("The session is not local: " + sessionId, sessionId);
+    }
+
+}

Added: geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionNotMovableException.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionNotMovableException.java?rev=369280&view=auto
==============================================================================
--- geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionNotMovableException.java
(added)
+++ geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/SessionNotMovableException.java
Sun Jan 15 15:36:05 2006
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.session;
+
+/**
+ * The Session is not movable.
+ * 
+ * @version $Revision: $
+ */
+public class SessionNotMovableException extends SessionException {
+
+    private static final long serialVersionUID = -4266816494370986532L;
+
+    public SessionNotMovableException(String sessionId) {
+        super("The session is not movable for ID: " + sessionId, sessionId);
+    }
+
+}

Added: geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/WriteLockTimedOutException.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/WriteLockTimedOutException.java?rev=369280&view=auto
==============================================================================
--- geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/WriteLockTimedOutException.java
(added)
+++ geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/WriteLockTimedOutException.java
Sun Jan 15 15:36:05 2006
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.session;
+
+/**
+ * The remote lock timed out while trying to move the session
+ * 
+ * @version $Revision: $
+ */
+public class WriteLockTimedOutException extends SessionException {
+
+    private static final long serialVersionUID = 7717527292815502849L;
+
+    public WriteLockTimedOutException(String sessionId) {
+        super("The remote write lock timed out for session ID: " + sessionId, sessionId);
+    }
+}

Modified: geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/package.html
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/package.html?rev=369280&r1=369279&r2=369280&view=diff
==============================================================================
--- geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/package.html (original)
+++ geronimo/trunk/modules/session/src/java/org/apache/geronimo/session/package.html Sun Jan
15 15:36:05 2006
@@ -4,8 +4,6 @@
 </head>
 <body>
 
-<h1>Geronimo :: Session</h1>
-
 <p>
 This library provides a simple API for working with stateful session state so that it is
easy to 
 integrate different state management technologies into projects like OpenEJB, ServiceMix
or Tuscany while also



Mime
View raw message