init
This commit is contained in:
@@ -0,0 +1,290 @@
|
||||
package com.eactive.eai.agent;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.net.ConnectException;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Properties;
|
||||
import java.net.ProtocolException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Vector;
|
||||
import javax.naming.Context;
|
||||
import javax.naming.InitialContext;
|
||||
|
||||
import com.eactive.eai.agent.command.Command;
|
||||
import com.eactive.eai.agent.command.CommandException;
|
||||
import com.eactive.eai.common.dao.DAOFactory;
|
||||
import com.eactive.eai.common.server.EAIServerDAO;
|
||||
import com.eactive.eai.common.server.EAIServerManager;
|
||||
import com.eactive.eai.common.server.EAIServerVO;
|
||||
import com.eactive.eai.common.util.ApplicationContextProvider;
|
||||
import com.eactive.eai.common.util.Logger;
|
||||
|
||||
/**
|
||||
* 1. 기능 : 등록된 EAI Server 에 Command를 broadcast
|
||||
* 2. 처리 개요 : 등록된 EAI Server 에 Command를 broadcast
|
||||
* 3. 주의사항
|
||||
*
|
||||
* @author
|
||||
* @version v 1.0.0
|
||||
* @see 관련 기능을 참조
|
||||
* @since
|
||||
*
|
||||
*/
|
||||
public class AgentUtil
|
||||
{
|
||||
static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
|
||||
final static String SERVLET_URL = "/ESBWeb/WebAgent";
|
||||
|
||||
private static HashMap returnValue;
|
||||
|
||||
/**
|
||||
* 1. 기능 : AgentUtil 기본 생성자
|
||||
* 2. 처리 개요 :
|
||||
* 3. 주의사항
|
||||
*
|
||||
* @param
|
||||
* @return
|
||||
* @exception
|
||||
**/
|
||||
private AgentUtil(){
|
||||
returnValue = new HashMap();
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. 기능 : 등록된 EAI Server 의 URL을 생성하여 반환
|
||||
* 2. 처리 개요 : EAIServerDAO를 통해 데이터베이스에 등록된 EAI Server의 URL을 생성하여 반환
|
||||
* 3. 주의사항
|
||||
*
|
||||
* @param
|
||||
* @return HashMap 등록된 EAI Server 의 URL.
|
||||
* @exception Exception
|
||||
**/
|
||||
private static HashMap getAllSvrUrl()throws Exception{
|
||||
|
||||
Map<String, EAIServerVO> servers = new HashMap<>();
|
||||
HashMap urlLists = new HashMap();
|
||||
|
||||
servers = EAIServerManager.getInstance().getAllServer(false);
|
||||
|
||||
Iterator it = servers.keySet().iterator();
|
||||
String svrName = "";
|
||||
while( it.hasNext()){
|
||||
svrName = (String)it.next();
|
||||
try{
|
||||
if(! ("ALL".equalsIgnoreCase(svrName))){
|
||||
StringBuffer urlBuf = new StringBuffer();
|
||||
EAIServerVO vo = (EAIServerVO)servers.get(svrName);
|
||||
if(vo != null){
|
||||
urlBuf.append(vo.toURL(EAIServerVO.HTTP_PROTOCOL));
|
||||
urlBuf.append(SERVLET_URL);
|
||||
logger.debug("AgentUtil] getAllSvrUrl - URL : "+urlBuf.toString());
|
||||
|
||||
urlLists.put(svrName, urlBuf.toString());
|
||||
}
|
||||
else {
|
||||
logger.error("AgentUtil] getAllSvrUrl - BroadCast할 서버 정보를 가져올 수 없습니다. ");
|
||||
}
|
||||
}
|
||||
|
||||
}catch (Exception e){
|
||||
logger.error("AgentUtil] getAllSvrUrl Error. - "+e.getMessage());
|
||||
}
|
||||
}
|
||||
return urlLists;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* temp code for test
|
||||
*/
|
||||
// private static HashMap getServerUrl() {
|
||||
//
|
||||
// HashMap urls = new HashMap();
|
||||
//
|
||||
// urls.put("cgServer", "http://172.17.51.127:8001/ESBWeb/WebAgent");
|
||||
// // urls.put("cgServer2", "http://172.17.51.127:7001/ESBWeb/WebAgent");
|
||||
// return urls;
|
||||
//
|
||||
// }
|
||||
|
||||
/**
|
||||
* 1. 기능 : 등록된 EAI Server에 Command를 broadcast
|
||||
* 2. 처리 개요 : 등록된 EAI Server의 URLConnection을 생성하여 Command broadcast하고
|
||||
* 전송된 결과값의 HashMap을 생성하여 반환
|
||||
* 3. 주의사항
|
||||
*
|
||||
* @param svrName broadcast할 EAI Server명
|
||||
* @param url broadcast할 EAI Server의 url
|
||||
* @param command broadcast할 Command
|
||||
* @return HashMap broadcast후 전송된 결과값.
|
||||
* 전송된 데이터가 success가 아니면 Exception이 전송된 것임.
|
||||
* @exception Exception
|
||||
**/
|
||||
public static HashMap broadcast(String svrName, String url, Command command)throws Exception{
|
||||
URLConnection urlCon;
|
||||
String response = "";
|
||||
|
||||
if(returnValue == null){
|
||||
returnValue = new HashMap();
|
||||
}
|
||||
|
||||
if(url !=null){
|
||||
urlCon = getURLConnection(url);
|
||||
try{
|
||||
response = sendCommand(urlCon, command);
|
||||
returnValue.put(svrName, response);
|
||||
}catch (Exception e){
|
||||
logger.error("AgentUtil] broadcast Excpetion", e);
|
||||
returnValue.put(svrName, e.getMessage());
|
||||
}
|
||||
|
||||
}else{
|
||||
logger.error("AgentUtil] broadcast Error. - url is null");
|
||||
}
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. 기능 : 등록된 EAI Server에 Command를 broadcast
|
||||
* 2. 처리 개요 : 등록된 EAI Server의 URLConnection을 생성하여 Command broadcast하고
|
||||
* 전송된 결과값의 HashMap을 생성하여 반환
|
||||
* 3. 주의사항
|
||||
*
|
||||
* @param command broadcast할 Command
|
||||
* @return HashMap broadcast후 전송된 결과값.
|
||||
* 전송된 데이터가 success가 아니면 Exception이 전송된 것임.
|
||||
* @exception Exception
|
||||
**/
|
||||
public static HashMap broadcast(Command command)throws Exception{
|
||||
URLConnection urlCon;
|
||||
HashMap servers = getAllSvrUrl();
|
||||
// HashMap servers = getServerUrl();
|
||||
|
||||
if(returnValue == null){
|
||||
returnValue = new HashMap();
|
||||
}
|
||||
|
||||
if(servers != null){
|
||||
Iterator it = servers.keySet().iterator();
|
||||
String svrName = "";
|
||||
String url = "";
|
||||
String response = "";
|
||||
|
||||
while( it.hasNext()){
|
||||
svrName = (String)it.next();
|
||||
url = (String) servers.get(svrName);
|
||||
|
||||
urlCon = getURLConnection(url);
|
||||
try{
|
||||
response = sendCommand(urlCon, command);
|
||||
returnValue.put(svrName, response);
|
||||
}catch (Exception e){
|
||||
logger.error("AgentUtil] broadcast Excpetion - "+url+ e.getMessage());
|
||||
returnValue.put(svrName, e.getMessage());
|
||||
}
|
||||
}
|
||||
}else{
|
||||
logger.error("AgentUtil] broadcast Error. - url is null");
|
||||
|
||||
}
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 1. 기능 : 해당 URLConnection으로 command 전송 처리 결과를 반환
|
||||
* 2. 처리 개요 : 해당 URLConnection으로 command 전송하고 처리 결과를 반환
|
||||
* 3. 주의사항
|
||||
*
|
||||
* @param urlCon 연결할 URLConnection
|
||||
* @param command 전송할 Command
|
||||
* @return String 처리된 결과
|
||||
* @exception Exception
|
||||
**/
|
||||
public static String sendCommand(URLConnection urlCon, Command command)throws Exception{
|
||||
ObjectOutputStream oos = null;
|
||||
ObjectInputStream ois = null;
|
||||
String response = "";
|
||||
|
||||
try {
|
||||
oos = new ObjectOutputStream(urlCon.getOutputStream());
|
||||
oos.writeObject(command);
|
||||
oos.flush();
|
||||
logger.debug("AgentUtil] SendCommand - "+urlCon.getURL().toString());
|
||||
|
||||
ois = new ObjectInputStream(urlCon.getInputStream());
|
||||
response = (String)ois.readObject();
|
||||
|
||||
} catch (ConnectException e) {
|
||||
logger.error("AgentUtil] sendCommand ConnectException. - "+urlCon.getURL()+ " can't Connect"+e.getMessage());
|
||||
throw e;
|
||||
} catch (IOException e2) {
|
||||
logger.error("AgentUtil] sendCommand IOException. - "+urlCon.getURL()+ " can't IO" +e2.getMessage());
|
||||
throw e2;
|
||||
} catch (Exception e) {
|
||||
logger.error("AgentUtil] sendCommand Exception. - "+urlCon.getURL()+e.getMessage());
|
||||
throw e;
|
||||
} finally {
|
||||
if (oos != null) try { oos.close(); } catch (Exception e) { oos = null; }
|
||||
if (ois != null) try { ois.close(); } catch (Exception e) { ois = null; }
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. 기능 : 지정된 url의 URLConnection 생성
|
||||
* 2. 처리 개요 : 지정된 url의 URLConnection 생성
|
||||
* 3. 주의사항
|
||||
*
|
||||
* @param url URLConnection을 생성을 위한 url
|
||||
* @return URLConnection 생성된 URLConnection
|
||||
* @exception
|
||||
**/
|
||||
public static URLConnection getURLConnection(String url) {
|
||||
URL u = null;
|
||||
try {
|
||||
u = new URL(url);
|
||||
} catch (MalformedURLException e) {
|
||||
logger.error("AgentUtil] getURLConnection ", e);
|
||||
}
|
||||
|
||||
HttpURLConnection conn = null;
|
||||
|
||||
try {
|
||||
conn = (HttpURLConnection) u.openConnection();
|
||||
} catch (Exception e) {
|
||||
logger.error("openConnection error", e);
|
||||
}
|
||||
|
||||
if(conn != null){
|
||||
conn.setDoInput(true);
|
||||
conn.setDoOutput(true);
|
||||
conn.setUseCaches(false);
|
||||
}
|
||||
else{
|
||||
logger.error("AgentUtil] getURLConnection Error. - " + url +" 의 HttpURLConnection 을 생성할 수 없습니다.");
|
||||
}
|
||||
|
||||
try {
|
||||
if(conn != null){
|
||||
conn.setRequestMethod("POST");
|
||||
}
|
||||
} catch (ProtocolException pe) {
|
||||
logger.error("AgentUtil] getURLConnection ", pe);
|
||||
}
|
||||
if(conn != null){
|
||||
conn.setRequestProperty("Content-type", "application/octet-stream");
|
||||
}
|
||||
return conn;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user