OSDN Git Service

track
[luz/luz.git] / src / com / lavans / luz2 / http / session / net / SessionServerConnectionManager.java
diff --git a/src/com/lavans/luz2/http/session/net/SessionServerConnectionManager.java b/src/com/lavans/luz2/http/session/net/SessionServerConnectionManager.java
new file mode 100644 (file)
index 0000000..f53e706
--- /dev/null
@@ -0,0 +1,109 @@
+/* $Id: SessionServerConnectionManager.java 411 2011-07-28 23:05:04Z dobashi $\r
+ * created: 2005/08/05\r
+ */\r
+package com.lavans.luz2.http.session.net;\r
+\r
+import java.io.IOException;\r
+import java.net.MalformedURLException;\r
+import java.net.URL;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+import org.omg.CORBA.portable.ApplicationException;\r
+import org.w3c.dom.Element;\r
+import org.w3c.dom.Node;\r
+import org.w3c.dom.NodeList;\r
+\r
+import com.lavans.luz2.util.Config;\r
+\r
+/**\r
+ * Web-ApJコネクション管理クラス。\r
+ * httpのプロトコル上一度flushしたコネクションは再利用できない。\r
+ * 同一URLに対するアクセスは、コネクションを新規に作成しても\r
+ * 自動的にHttpKeepaliveになる。したがって本クラスでは\r
+ * コネクション数の管理は行わず、接続先のみ管理し、コネクションは\r
+ * 要求がある度に新規作成する。\r
+ *\r
+ * @author dobashi\r
+ */\r
+public class SessionServerConnectionManager {\r
+       /** ロガー。debug用 */\r
+       private static Log logger = LogFactory.getLog(SessionServerConnectionManager.class.getName());\r
+\r
+       /** 接続設定情報 */\r
+       private static Map<String, URL> urlMap = null;\r
+\r
+       /**\r
+        * Singletonの実体。\r
+        */\r
+       private static SessionServerConnectionManager instatnce = new SessionServerConnectionManager();\r
+\r
+       /**\r
+        * インスタンス取得メソッド。\r
+        * @return\r
+        */\r
+       public static SessionServerConnectionManager getInstance(){\r
+               return instatnce;\r
+       }\r
+\r
+       /**\r
+        * コンストラクタ。\r
+        * Singletonのため呼び出し不可。\r
+        *\r
+        */\r
+       private SessionServerConnectionManager(){\r
+               init();\r
+       }\r
+\r
+       /**\r
+        * 初期化。\r
+        *\r
+        */\r
+       public void init(){\r
+               try {\r
+                       System.setProperty("http.keepAlive","true");\r
+\r
+                       urlMap = new HashMap<String, URL>();\r
+\r
+                       Config config = Config.getInstance("cayen.xml");\r
+                       Node node = config.getNode("session_server");\r
+                       if(node==null){\r
+                               logger.error("cayen.xmlに<session_server>がありません。");\r
+                       }\r
+                       NodeList nodeList = node.getChildNodes();\r
+                       for(int i=0; i<nodeList.getLength(); i++){\r
+                               Node item = nodeList.item(i);\r
+                               if((item.getNodeType()==Node.TEXT_NODE) ||\r
+                                  (item.getNodeType()==Node.COMMENT_NODE) ){\r
+                                       continue;\r
+                               }\r
+\r
+                               // 接続名取得 ysugisawa@@\r
+                               String name = item.getNodeName();\r
+                               // URL取得\r
+                               Element ele = (Element)item;\r
+                               URL url     = new URL(ele.getAttribute("uri"));\r
+\r
+                               logger.info("session-server:"+ name +"-"+ url);\r
+                               urlMap.put(name, url);\r
+                       }\r
+               } catch (MalformedURLException e) {\r
+                       logger.error("初期化に失敗",e);\r
+               }\r
+\r
+       }\r
+\r
+       /**\r
+        * Sessionサーバー(webサーバー)への接続を取得。\r
+        * @return\r
+        * @throws ApplicationException\r
+        */\r
+       public SessionServerConnection getConnection(String jvm) throws IOException {\r
+               SessionServerConnection con;\r
+               con = new SessionServerConnection(urlMap.get(jvm));\r
+\r
+               return con;\r
+       }\r
+}\r