--- /dev/null
+/* $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