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