OSDN Git Service

Merge branch 'temp1'
[luz/luz.git] / src / com / lavans / luz2 / http / session / SessionServiceLocal.java
diff --git a/src/com/lavans/luz2/http/session/SessionServiceLocal.java b/src/com/lavans/luz2/http/session/SessionServiceLocal.java
new file mode 100644 (file)
index 0000000..0e7a26c
--- /dev/null
@@ -0,0 +1,116 @@
+/* $Id: SessionServiceLocal.java 94 2008-12-18 11:07:17Z dobashi $\r
+ * 作成日: 2006/01/20 14:29:33\r
+ *\r
+ */\r
+package com.lavans.luz2.http.session;\r
+\r
+import java.util.Collections;\r
+import java.util.Enumeration;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import javax.servlet.http.HttpSession;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+/**\r
+ * SessionServiceApクラス。\r
+ *\r
+ * This is generated by lamen.\r
+ */\r
+public class SessionServiceLocal{\r
+       /** ロガー。debug用 */\r
+       private static Log logger = LogFactory.getLog(SessionServiceLocal.class.getName());\r
+\r
+       /** singleton実体 */\r
+       private static SessionServiceLocal instance = null;\r
+\r
+       /** セッションを格納するMap */\r
+       private Map<String, HttpSession> sessionMap = Collections.synchronizedMap(new HashMap<String, HttpSession>());\r
+\r
+       /**\r
+        * コンストラクタ。\r
+        * Singletonのため呼び出し不可。\r
+        */\r
+       protected SessionServiceLocal(){\r
+\r
+       }\r
+\r
+       /**\r
+        * インスタンス取得メソッド。\r
+        * @return\r
+        */\r
+       public static SessionServiceLocal getInstance(){\r
+               if(instance==null){\r
+                       instance = new SessionServiceLocal();\r
+               }\r
+               return instance;\r
+       }\r
+\r
+       /**\r
+        * getSession\r
+        * リモートからの取得用。\r
+        * 要求されたsessionIdが存在しないならnullを返す。\r
+        */\r
+       @SuppressWarnings("unchecked")\r
+       public Map<String, Object> getRemoteSessionAttribute(String sessionId){\r
+               logger.debug("SessionServiceLocal#getRemoteSessionAttribute("+ sessionId +")");\r
+               HttpSession session = sessionMap.remove(sessionId);\r
+               // 要求されたsessionIdが存在しないならnullを返す。\r
+               if(session == null){\r
+                       //logger.log("is not exist:"+ sessionId);\r
+                       return null;\r
+               }\r
+\r
+               try{\r
+                       Enumeration<String> attrNames = session.getAttributeNames();\r
+                       // 属性の取得\r
+                       Map<String, Object> attr = Collections.synchronizedMap(new HashMap<String, Object>());\r
+                       while(attrNames.hasMoreElements()){\r
+                               String attrName = attrNames.nextElement();\r
+                               attr.put(attrName, session.getAttribute(attrName));\r
+                       }\r
+                       return attr;\r
+               }catch (Exception e) {\r
+                       // sessionが無効な場合はgetAttributeNames()に失敗する。\r
+                       return null;\r
+               }\r
+\r
+       }\r
+\r
+       /**\r
+        * セッションをこのサービスに登録する。\r
+        * @param session\r
+        */\r
+       public void setSession(HttpSession session){\r
+               logger.debug("set session:"+ session.getId());\r
+               sessionMap.put(session.getId(), session);\r
+       }\r
+\r
+       /**\r
+        *\r
+        * @param session\r
+        * @return\r
+        */\r
+       public boolean exists(String  sessionId){\r
+               return sessionMap.containsKey(sessionId);\r
+       }\r
+\r
+       /**\r
+        * invalidate\r
+        */\r
+       public Boolean invalidate(String sessionId){\r
+               HttpSession session = sessionMap.get(sessionId);\r
+               if(session==null){\r
+//                     logger.log(logLevel,"invalid sessionId invalidate():"+ sessionId);\r
+                       return Boolean.FALSE;\r
+               }\r
+               session.invalidate();\r
+               logger.debug("remove:"+ sessionId);\r
+               sessionMap.remove(sessionId);\r
+               return Boolean.TRUE;\r
+       }\r
+\r
+}\r
+\r