package egovframework.rte.fdl.xml.ehcache; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.Socket; import java.util.Iterator; import java.util.List; import egovframework.rte.fdl.xml.SharedObject; import org.jdom2.Attribute; import org.jdom2.Element; import org.jdom2.JDOMException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class CacheXMLAgent { String cacheServerIP; int cacheServerPort=0; String Storekey; String Retrievekey; String XMLFileName; private static final Logger LOGGER = LoggerFactory.getLogger(CacheXMLAgent.class); public void setXMLFileName(String XMLFileName) { this.XMLFileName = XMLFileName; } public void setPortNIp(String cacheServerIP,int cacheServerPort) { this.cacheServerIP = cacheServerIP; this.cacheServerPort = cacheServerPort; //64208 } public void setStorekey(String Storekey) { this.Storekey = Storekey; } public void setRetrievekey(String Retrievekey) { this.Retrievekey = Retrievekey; } public void sendCacheServer(List<?> list) { Socket socket = null; ObjectOutputStream oos= null; ObjectInputStream ooi= null; SharedObject sObject = null; try { socket = new Socket(cacheServerIP, cacheServerPort); oos = new ObjectOutputStream(socket.getOutputStream()); sObject = new SharedObject(Storekey,list); oos.writeObject(sObject); ooi = new ObjectInputStream(socket.getInputStream()); sObject = (SharedObject)ooi.readObject(); LOGGER.debug("서버로 부터 Message : {}", sObject.getValue()); } catch(Throwable t) { t.printStackTrace(); } finally { try { oos.close(); } catch(Throwable t) {t.printStackTrace();} try { socket.close(); } catch(Throwable t) {t.printStackTrace();} } } public SharedObject getCacheServer() { Socket socket = null; ObjectOutputStream oos= null; ObjectInputStream ooi= null; SharedObject sObject = null; try { socket = new Socket(cacheServerIP, cacheServerPort); oos = new ObjectOutputStream(socket.getOutputStream()); sObject = new SharedObject("*",Retrievekey); oos.writeObject(sObject); ooi = new ObjectInputStream(socket.getInputStream()); sObject = (SharedObject)ooi.readObject(); } catch(Throwable t) { t.printStackTrace(); System.exit(1); } finally { try { oos.close(); } catch(Throwable t) {t.printStackTrace();} try { socket.close(); } catch(Throwable t) {t.printStackTrace();} } return sObject; } public void viewEelement(List<?> list) { Iterator<?> i = list.iterator(); while (i.hasNext()) { Element element = (Element) i.next(); List<?> attList = element.getAttributes(); if (attList.size() != 0) { // 역시 속성리스트를 다시 iterator 로 담고 Iterator<?> ii = attList.iterator(); while(ii.hasNext()) { /** Attribute 파싱 **/ // iterator 로 부터 하나의 속성을 꺼내와서... Attribute at = (Attribute)ii.next(); LOGGER.debug("attribute : {} attribute value : ", at.getName(), at.getValue()); LOGGER.debug("Element1 Name : {} Element1 Value : {}", (String)element.getName(), (String)element.getValue()); } // end of while } // end of 속성 if List<?> list2 = element.getChildren(); if(list2.size() > 1) { viewEelement(list2); } } } /** * @param args */ public static void main(String[] args) throws IOException,JDOMException{ String cacheServerIP = "127.0.0.1"; String Storekey = "1"; String XMLFileName = "spring/context-sql.xml"; int cacheServerPort = 64208; CacheXMLAgent cxa = new CacheXMLAgent(); cxa.setPortNIp(cacheServerIP, cacheServerPort); cxa.setStorekey(Storekey); cxa.setXMLFileName(XMLFileName); cxa.setRetrievekey("1"); SharedObject sobject = cxa.getCacheServer(); List<?> list_ = (List<?>)sobject.getValue(); cxa.viewEelement(list_); } }