개발sync 20251205

This commit is contained in:
25W0075
2025-12-05 19:25:42 +09:00
parent df8503c781
commit 13b394673b
61 changed files with 8766 additions and 7 deletions
+2 -1
View File
@@ -5,7 +5,8 @@
<session-descriptor>
<timeout-secs>1800</timeout-secs>
<cookie-name>JSESSIONID_EMS</cookie-name>
<persistent-store-type>replicated_if_clustered</persistent-store-type>
<!-- <persistent-store-type>replicated_if_clustered</persistent-store-type> -->
<persistent-store-type>none</persistent-store-type>
</session-descriptor>
<container-descriptor>
@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="euc-kr"?>
<%@ page contentType="text/xml; charset=utf-8"%>
<%@ page import="com.eactive.eai.adapter.socket2.config.MonitoringUtil"%>
<%@ page import="java.util.*,com.eactive.eai.common.util.Logger" %>
<Dataset>
<Columns>
<Column Name="EaiSevrInstncName" Type="string" Size="255" />
<Column Name="AdptrBzwkGroupName" Type="string" Size="255" />
<Column Name="AdptrBzwkName" Type="string" Size="255" />
<Column Name="AdptrBzwkDesc" Type="string" Size="255" />
<Column Name="AdptrType" Type="string" Size="255" />
<Column Name="Status" Type="string" Size="255" />
<Column Name="Param7" Type="string" Size="255" />
<Column Name="Param8" Type="string" Size="255" />
<Column Name="Starting" Type="string" Size="255" />
<Column Name="KesaUseYn" Type="string" Size="255" />
<Column Name="TestMasterYn" Type="string" Size="255" />
<Column Name="AdptrNickName" Type="string" Size="255" />
<Column Name="CompanyCodeData" Type="string" Size="255" />
<Column Name="StartStop" Type="string" Size="255" />
</Columns>
<Rows>
<%!
static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
%>
<%
//
// Socket2 status info
String eaiSvrInstNm = request.getParameter("eaiSvrInstNm");
String adapterGroupName = request.getParameter("adapterGroupName");
if (eaiSvrInstNm == null)
eaiSvrInstNm = "";
if (adapterGroupName == null)
adapterGroupName = "";
String stateColor = "";
String stateText = "";
String startColor = "";
String startText = "";
String startStop = "";
String[][] arrList = null ;
try {
if(adapterGroupName.length() > 0) {
arrList = MonitoringUtil.adapterStatus(adapterGroupName);
}
else {
arrList = MonitoringUtil.adapterList1();
}
} catch ( Exception e ) {
if (logger.isError()){
logger.error(e.toString());
}
}
// 리턴된 arrList 가 null 이 아니면서 배열길이가 0 인 경우 Exception 발생
// 하지 않도록 하기 위함. (2008-06-30)
if( arrList == null || arrList.length == 0 ) {
%>
<Row>
<Data><%=eaiSvrInstNm%></Data>
<Data></Data>
<Data></Data>
<Data></Data>
<Data></Data>
<Data></Data>
<Data></Data>
<Data></Data>
<Data></Data>
<Data></Data>
<Data></Data>
<Data></Data>
<Data></Data>
</Row>
<%
} else {
int col = arrList[0].length ;
int row = arrList.length ;
for( int i = 0 ; i < row ; i++ ) {
out.println("<Row>");
out.println("<Data>" + eaiSvrInstNm + "</Data>");
for( int j = 0 ; j < col ; j++ ) {
if(j == 2) {
out.println("<Data><![CDATA[" + arrList[i][j] + "]]></Data>");
} else {
out.println("<Data>" + arrList[i][j] + "</Data>");
}
}
// 버그수정
if(arrList[i] != null && arrList[i].length > 4 ) {
if( "STARTED".equals(arrList[i][7]) || "STARTING".equals(arrList[i][7])) {
startStop = "03" ; // stop
} else {
startStop = "01" ; // start
}
}
out.println("<Data>"+ startStop +"</Data>");
out.println("</Row>");
}
}
%>
</Rows>
</Dataset>
@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="euc-kr"?>
<%@ page contentType="text/xml; charset=utf-8"%>
<%@ page import="com.eactive.eai.adapter.socket2.config.MonitoringUtil"%>
<%@ page import="java.util.*,com.eactive.eai.common.util.Logger" %>
<Dataset>
<Columns>
<Column Name="EaiSevrInstncName" Type="string" Size="255" />
<Column Name="AdptrBzwkGroupName" Type="string" Size="255" />
<Column Name="AdptrBzwkName" Type="string" Size="255" />
<Column Name="AdptrBzwkDesc" Type="string" Size="255" />
<Column Name="MaxConnection" Type="string" Size="255" />
<Column Name="CurrentConnection" Type="string" Size="255" />
<Column Name="SendCount" Type="string" Size="255" />
<Column Name="RecvCount" Type="string" Size="255" />
<Column Name="ErrorCount" Type="string" Size="255" />
<Column Name="Status" Type="string" Size="255" />
<Column Name="Param7" Type="string" Size="255" />
<Column Name="Param8" Type="string" Size="255" />
</Columns>
<Rows>
<%!
static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
%>
<%
//
// Socket2 connection info
String eaiSvrInstNm = request.getParameter("eaiSvrInstNm");
if (eaiSvrInstNm == null)
eaiSvrInstNm = "";
String stateColor = "";
String stateText = "";
String startColor = "";
String startText = "";
String startStop = "";
String[][] arrList = null ;
try {
arrList = MonitoringUtil.adapterList2();
} catch ( Exception e ) {
if (logger.isError()){
logger.error(e.toString());
}
}
// 리턴된 arrList 가 null 이 아니면서 배열길이가 0 인 경우 Exception 발생
// 하지 않도록 하기 위함. (2008-06-30)
if( arrList == null || arrList.length == 0 ) {
%>
<Row>
<Data><%=eaiSvrInstNm%></Data>
<Data></Data>
<Data></Data>
<Data></Data>
<Data></Data>
<Data></Data>
<Data></Data>
<Data></Data>
<Data></Data>
</Row>
<%
} else {
int col = arrList[0].length ;
int row = arrList.length ;
for( int i = 0 ; i < row ; i++ ) {
out.println("<Row>");
out.println("<Data>" + eaiSvrInstNm + "</Data>");
for( int j = 0 ; j < col ; j++ ) {
out.println("<Data>" + arrList[i][j] + "</Data>");
}
out.println("</Row>");
}
}
%>
</Rows>
</Dataset>
@@ -0,0 +1,54 @@
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="com.eactive.eai.adapter.socket2.config.MonitoringUtil"%>
<%@ page import="com.eactive.eai.common.util.CharsetDecoderUtil" %>
<%@ page import="java.util.*,com.eactive.eai.common.util.Logger" %>
<%!
static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
%>
<%
//
// Socket2 adapter start/stop command
String adapterGroupName = request.getParameter("adapterGroupName");
String adapterName = request.getParameter("adapterName");
String cmd = request.getParameter("cmd");
if( adapterGroupName == null ) {
adapterGroupName = "" ;
}
if( adapterName == null ) {
adapterName = "" ;
}
if( cmd == null ) {
cmd = "" ;
}
String retMsg = null ;
try {
if( cmd.equals("start") ) {
MonitoringUtil.adapterStart(adapterGroupName, adapterName);
retMsg = "true" ;
} else if( cmd.equals("stop") ) {
MonitoringUtil.adapterStop(adapterGroupName, adapterName);
retMsg = "true" ;
} else {
retMsg = "Unknown command error :" + cmd ;
}
} catch ( Exception e ) {
if (logger.isError()){
logger.error("MonitoringUtil.adapterStart|adapterStop(" + adapterGroupName + ", " + adapterName + ")" );
}
//e.printStackTrace(new java.io.PrintWriter(out));
retMsg = "false" ;
}
if( retMsg == null )
retMsg = "" ;
out.println( CharsetDecoderUtil.toKor(retMsg) );
%>
+407
View File
@@ -0,0 +1,407 @@
<%@ page import="java.util.*"%>
<%@ page import="com.eactive.eai.common.message.*,java.text.SimpleDateFormat"%>
<%@ page import="javax.jms.*,com.eactive.eai.flowcontrol.jms.*,javax.naming.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%!
public final static String JMS_FACTORY = "com.eactive.eai.common.FlowRouterConnectionFactory";
public ArrayList displayQueue(String queueName, String mSelector, int maxCount) throws Exception {
ArrayList al = new ArrayList();
InitialContext ctx = ctx = new InitialContext();
QueueConnectionFactory qconFactory = null;
QueueConnection qcon = null;
QueueSession qsession = null;
QueueBrowser qbrowser = null;
javax.jms.Queue queue = null;
int count = 0;
try {
java.text.DateFormat DATE_FORMAT = DATE_FORMAT = java.text.DateFormat.getDateTimeInstance(
java.text.DateFormat.SHORT, java.text.DateFormat.SHORT);
if (DATE_FORMAT instanceof java.text.SimpleDateFormat)
((java.text.SimpleDateFormat) DATE_FORMAT)
.applyPattern("yy/MM/dd kk:mm:ss");
qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
qcon = qconFactory.createQueueConnection();
qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
queue = (javax.jms.Queue) ctx.lookup(queueName);
if(mSelector != null && mSelector.length() > 0) {
qbrowser = qsession.createBrowser(queue, mSelector);
}
else {
qbrowser = qsession.createBrowser(queue);
}
qcon.start();
Enumeration e = qbrowser.getEnumeration();
Message m = null;
if (! e.hasMoreElements()) {
System.out.println("There are no messages on this queue. - " + queueName);
}
else {
System.out.println(queueName + " - Queued JMS Messages: "+DATE_FORMAT.format(new java.util.Date(System
.currentTimeMillis())));
while (e.hasMoreElements()) {
m = (Message) e.nextElement();
count++;
System.out.println("get Message " + count );
/*
System.out.println("Message ID " + m.getJMSMessageID() +
" delivered " + new Date(m.getJMSTimestamp()) +
" to " + m.getJMSDestination());
System.out.print("\tExpires ");
if (m.getJMSExpiration() > 0) {
System.out.println( new Date( m.getJMSExpiration()));
}
else {
System.out.println("never");
}
System.out.println("\tPriority " + m.getJMSPriority());
System.out.println("\tMode " + (
m.getJMSDeliveryMode() == DeliveryMode.PERSISTENT ?
"PERSISTENT" : "NON_PERSISTENT"));
System.out.println("\tCorrelation ID " + m.getJMSCorrelationID());
System.out.println("\tReply to " + m.getJMSReplyTo());
System.out.println("\tMessage type " + m.getJMSType());
System.out.println("\tMessage BizCode " + m.getStringProperty("BizCode"));
if (m instanceof TextMessage) {
System.out.println("\tTextMessage \"" +
((TextMessage)m).getText() + "\"");
}
*/
if(count > maxCount) {
break;
}
else {
if(m instanceof ObjectMessage) {
al.add(m);
}
}
}
}
}
catch( Exception e ) {
//e.printStackTrace();
}
finally {
try {
if(qbrowser != null) qbrowser.close();
if(qsession != null) qsession.close();
if(qcon != null) qcon.close();
}
catch(Exception ex) {}
}
return al;
}
public ArrayList purgeQueue(String queueName, String mSelector, int purgeSize, boolean isLogging) throws Exception {
ArrayList al = new ArrayList();
InitialContext ctx = new InitialContext();
QueueConnectionFactory qconFactory = null;
QueueConnection qcon = null;
QueueSession qsession = null;
QueueReceiver qreceiver = null;
javax.jms.Queue queue = null;
long sTime = System.currentTimeMillis();
long cTime = 0;
int purgeCount = 0;
try {
java.text.DateFormat DATE_FORMAT = DATE_FORMAT = java.text.DateFormat.getDateTimeInstance(
java.text.DateFormat.SHORT, java.text.DateFormat.SHORT);
if (DATE_FORMAT instanceof java.text.SimpleDateFormat)
((java.text.SimpleDateFormat) DATE_FORMAT)
.applyPattern("yy/MM/dd kk:mm:ss");
qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
qcon = qconFactory.createQueueConnection();
qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
queue = (javax.jms.Queue) ctx.lookup(queueName);
if(mSelector != null && mSelector.length() > 0) {
qreceiver = qsession.createReceiver(queue, mSelector);
}
else {
qreceiver = qsession.createReceiver(queue);
}
qcon.start();
Message m = null;
System.out.println(">> "+queueName + " - Queued JMS Messages: "+DATE_FORMAT.format(new java.util.Date(System
.currentTimeMillis())));
cTime = System.currentTimeMillis() - sTime;
sTime = System.currentTimeMillis();
for(int i=0; i<purgeSize; i++) {
m = (Message)qreceiver.receiveNoWait();
if(m == null) {
System.out.println(">> No more Message in Queue - " + queueName);
System.out.println(">> Stop Purge.");
break;
}
purgeCount++;
System.out.println("\n>> purge "+(i+1));
if(isLogging) {
/*
System.out.println("Message ID " + m.getJMSMessageID() +
" delivered " + new Date(m.getJMSTimestamp()) +
" to " + m.getJMSDestination());
System.out.print("\tExpires ");
if (m.getJMSExpiration() > 0) {
System.out.println( new Date( m.getJMSExpiration()));
}
else {
System.out.println("never");
}
System.out.println("\tPriority " + m.getJMSPriority());
System.out.println("\tMode " + (
m.getJMSDeliveryMode() == DeliveryMode.PERSISTENT ?
"PERSISTENT" : "NON_PERSISTENT"));
System.out.println("\tCorrelation ID " + m.getJMSCorrelationID());
System.out.println("\tReply to " + m.getJMSReplyTo());
System.out.println("\tMessage type " + m.getJMSType());
System.out.println("\tMessage BizCode " + m.getStringProperty("BizCode"));
if (m instanceof TextMessage) {
System.out.println("\tTextMessage \"" +
((TextMessage)m).getText() + "\"");
}
*/
if(m instanceof ObjectMessage) {
al.add(m);
}
}
}
System.out.println("----------------------------------------------------------------");
System.out.println(">> Purge "+purgeCount+" messages completed : connect time("+cTime+") ms, purge time ("
+ (System.currentTimeMillis() - sTime) +") ms");
System.out.println("----------------------------------------------------------------");
return al;
}
catch( Exception e ) {
throw e;
}
finally {
try {
if(qreceiver != null) qreceiver.close();
if(qsession != null) qsession.close();
if(qcon != null) qcon.close();
}
catch(Exception ex) {}
}
}%>
<%
ArrayList al = null;
String queueName = request.getParameter("queueName");
String maxCount = request.getParameter("maxCount");
String fromTime = request.getParameter("fromTime");
String toTime = request.getParameter("toTime");
String selector = request.getParameter("selector");
String actionType = request.getParameter("actionType");
String[][] monitorDataTotal = null;
String[][] monitorData = null;
String timeSelector = "";
String mSelector = "";
if( (fromTime != null && fromTime.length() == 14) && (toTime != null && toTime.length() == 14)) {
SimpleDateFormat SDF_YYYYMMDDHHMMSS_NO_MARK = new SimpleDateFormat( "yyyyMMddHHmmss");
Date fDate= SDF_YYYYMMDDHHMMSS_NO_MARK.parse(fromTime);
Date tDate= SDF_YYYYMMDDHHMMSS_NO_MARK.parse(toTime);
Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("GMT+09:00"),Locale.KOREA);
calendar.setTime (fDate);
Long ftimeMili = calendar.getTimeInMillis();
calendar.setTime (tDate);
Long ttimeMili = calendar.getTimeInMillis();
timeSelector = "JMSTimestamp BETWEEN " + ftimeMili + " AND " + ttimeMili ;
if(selector != null && selector.trim().length() > 0) {
mSelector = selector + " AND " + timeSelector;
}
else {
mSelector = timeSelector;
}
}
FCQueueReceiverManager man = FCQueueReceiverManager.getInstance();
System.out.println("actionType = " + actionType);
System.out.println("queueName = " + queueName);
System.out.println("maxCount = " + maxCount);
System.out.println("selector = " + selector);
System.out.println("fromTime = " + fromTime);
System.out.println("toTime = " + toTime);
System.out.println("mSelector = " + mSelector);
String errorMsg = null;
try {
if("DISPLAY".equals(actionType)) {
System.out.println("DISPLAY : queueName = " + queueName);
int mCount = Integer.parseInt(maxCount);
al = displayQueue(queueName, mSelector, mCount);
}
else if("PURGE".equals(actionType)) {
System.out.println("PURGE : queueName = " + queueName);
int mCount = Integer.parseInt(maxCount);
al = purgeQueue(queueName, mSelector, mCount, true);
}
else {
System.out.println("Unhandled Action " + actionType);
}
} catch(Exception e) {
errorMsg = e.getMessage();
}
%>
<html>
<head>
<title>
FC Queue Purger
</title>
<script>
function doAction() {
document.frm.submit();
}
function doDisplay() {
document.frm.actionType.value="DISPLAY";
document.frm.submit();
}
function doPurge() {
document.frm.actionType.value="PURGE";
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>FC Queue Receiver Manager</b>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table border='0' width="800" >
<tr>
<td colspan="5" align='left'>
<%
if(errorMsg != null) {
%>
<font color=red>Error : <%= errorMsg %></font>
<%
}
%>
</td>
</tr>
<tr>
<td width="200" align='left'>* Queue Name</td>
<td align='left'><input type="text" name="queueName" size='40' value="<%= queueName==null?"":queueName %>" ></td>
</tr>
<td width="200" align='left'>* Message Count</td>
<td align='left'><input type="text" name="maxCount" size='40' value="<%= maxCount==null?"":maxCount %>" ></td>
</tr>
<tr>
<td width="200" align='left'>Selector</td>
<td align='left'><input type="text" name="selector" size='40' value="<%= selector==null?"":selector %>" ></td>
</tr>
<tr>
<td width="200" align='left'>Selector Time(yyyyMMddHHmmss)</td>
<td align='left'>
<input type="text" name="fromTime" size='14' maxlength='14' value="<%= fromTime==null?"":fromTime %>" >
<input type="text" name="toTime" size='14' maxlength='14' value="<%= toTime==null?"":toTime %>" >
</td>
</tr>
<tr>
<td colspan="2" align='left'>Selector keys( EAIBWKCLS, EAISVCCD, OSIDINSTCD )</td>
</tr>
<tr>
<td colspan="2" align='right'>
<input type="button" value="DISPLAY" onclick="doDisplay()">
<input type="button" value="PURGE" onclick="doPurge()">
</td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='center' width='300' bgcolor="#ccccff">JMS MsgID</td>
<td align='center' width='300' bgcolor="#ccccff">JMS delivered</td>
<td align='center' width='200' bgcolor="#ccccff">BwkCls</td>
<td align='center' width='200' bgcolor="#ccccff">EAISvcCd</td>
</tr>
<%
if(al == null || al.size() == 0) {
%>
<tr bgcolor='white'>
<td align='left' colspan="4" bgcolor="#ffffff">No Message in Queue&nbsp;</td>
</tr>
<%
}
else {
try {
for(int i=0; i<al.size(); i++) {
Object o = al.get(i);
EAIMessage msg = null;
ObjectMessage om = null;
if(o instanceof ObjectMessage) {
om = (ObjectMessage)o;
msg = (EAIMessage)om.getObject();
%>
<tr bgcolor='white'>
<td align='left' bgcolor="#ffffff"><%= om.getJMSMessageID() %>&nbsp;</td>
<td align='left' bgcolor="#ffffff"><%= new Date(om.getJMSTimestamp()) %>&nbsp;</td>
<td align='left' bgcolor="#ffffff"><%= msg.getBwkCls() %>&nbsp;</td>
<td align='left' bgcolor="#ffffff"><%= msg.getEAISvcCd() %>&nbsp;</td>
</tr>
<%
}
}
} catch(Exception e) {
out.println(e.getMessage());
}
}
%>
</table><br>
</form>
</body>
</html>
+245
View File
@@ -0,0 +1,245 @@
<%@ page import="javax.jms.*,com.eactive.eai.flowcontrol.jms.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%
String receiverName = request.getParameter("receiverName");
String queueName = request.getParameter("queueName");
String errorQueueName = request.getParameter("errorQueueName");
String receiverCount = request.getParameter("receiverCount");
String delayMs = request.getParameter("delayMs");
String retryCnt = request.getParameter("retryCnt");
String selector = request.getParameter("selector");
String descr = request.getParameter("descr");
String sreceiverName = request.getParameter("s_receiverName");
String actionType = request.getParameter("actionType");
String[][] monitorDataTotal = null;
String[][] monitorData = null;
FCQueueReceiverManager man = FCQueueReceiverManager.getInstance();
System.out.println("actionType = " + actionType);
System.out.println("sreceiverName = " + sreceiverName);
String errorMsg = null;
String[] receiverNames = null;
try {
if("START".equals(actionType)) {
System.out.println("START : receiverName = " + receiverName);
int ireceiverCount = Integer.parseInt(receiverCount);
int idelayMs = Integer.parseInt(delayMs);
int iretryCnt = Integer.parseInt(retryCnt);
FCQueueReceiverVO vo = new FCQueueReceiverVO();
vo.setReceiverName(receiverName);
vo.setQueueName(queueName);
vo.setErrorQueueName(errorQueueName);
vo.setReceiverCount(ireceiverCount);
vo.setErrorDelayTimeMs(idelayMs);
vo.setRetryCount(iretryCnt);
vo.setMessageSelector(selector);
vo.setDescription(descr);
man.setFCQueueReceiver(vo);
}
else if("STOP".equals(actionType)) {
System.out.println("STOP : receiverName = " + sreceiverName);
man.removeFCQueueReceiver(sreceiverName);
}
else if("STATUS".equals(actionType)) {
System.out.println("STATUS : receiverName = " + sreceiverName);
monitorDataTotal = man.getMonitorData();
monitorData = man.getMonitorData(sreceiverName);
FCQueueReceiverVO vo = man.getFCQueueReceiver(sreceiverName);
receiverName = vo.getReceiverName();
queueName = vo.getQueueName();
errorQueueName = vo.getErrorQueueName();
receiverCount = "" + vo.getReceiverCount();
delayMs = "" + vo.getErrorDelayTimeMs();
retryCnt = "" + vo.getRetryCount();
selector = vo.getMessageSelector();
descr = vo.getDescription();
}
else if("RESET".equals(actionType)) {
System.out.println("RESET : receiverName = " + sreceiverName);
man.resetCount(sreceiverName);
}
else {
System.out.println("Unhandled Action " + actionType);
}
System.out.println("receiverName = " + receiverName);
System.out.println("queueName = " + queueName);
System.out.println("errorQueueName= " + errorQueueName);
System.out.println("receiverCount = " + receiverCount);
System.out.println("delayMs = " + delayMs);
System.out.println("retryCnt = " + retryCnt);
System.out.println("selector = " + selector);
System.out.println("descr = " + descr);
} catch(Exception e) {
errorMsg = e.getMessage();
//e.printStackTrace();
}
try {
receiverNames = man.getAllReceiverNames();
} catch(Exception e) {
errorMsg = e.getMessage();
//e.printStackTrace();
}
%>
<html>
<head>
<title>
FC Queue Receiver Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function doStop() {
document.frm.actionType.value="STOP";
document.frm.submit();
}
function doStart() {
document.frm.actionType.value="START";
document.frm.submit();
}
function doStatus() {
document.frm.actionType.value="STATUS";
document.frm.submit();
}
function doReset() {
document.frm.actionType.value="RESET";
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>FC Queue Receiver Manager</b>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table border='0' width="800" >
<tr>
<td colspan="5" align='left'>
<%
if(errorMsg != null) {
%>
<font color=red>Error : <%= errorMsg %></font>
<%
}
%>
</td>
</tr>
<tr>
<td width="200" align='left'>* Receiver Name</td>
<td align='left'><input type="text" name="receiverName" size='40' value="<%= receiverName==null?"":receiverName %>" ></td>
</tr>
<tr>
<td width="200" align='left'>* Queue Name</td>
<td align='left'><input type="text" name="queueName" size='40' value="<%= queueName==null?"":queueName %>" ></td>
</tr>
<td width="200" align='left'>* Error Queue Name</td>
<td align='left'><input type="text" name="errorQueueName" size='40' value="<%= errorQueueName==null?"":errorQueueName %>" ></td>
</tr>
<tr>
<td width="200" align='left'>* Queue Thread Count</td>
<td align='left'><input type="text" name="receiverCount" size='40' value="<%= receiverCount==null?"":receiverCount %>" ></td>
</tr>
<tr>
<td width="200" align='left'>* Error Delay Time(ms)</td>
<td align='left'><input type="text" name="delayMs" size='40' value="<%= delayMs==null?"":delayMs %>" ></td>
</tr>
<td width="200" align='left'>* Retry Count</td>
<td align='left'><input type="text" name="retryCnt" size='40' value="<%= retryCnt==null?"":retryCnt %>" ></td>
</tr>
<tr>
<td width="200" align='left'>Selector</td>
<td align='left'><input type="text" name="selector" size='40' value="<%= selector==null?"":selector %>" ></td>
</tr>
<tr>
<td colspan="2" align='left'>Selector keys( EAIBWKCLS, EAISVCCD, OSIDINSTCD )</td>
</tr>
<tr>
<td width="200" align='left'>Description</td>
<td align='left'><input type="text" name="descr" size='40' value="<%= descr==null?"":descr %>" ></td>
</tr>
<tr>
<td align='left'>
<select name="s_receiverName">
<%
for(int i=0; i<receiverNames.length; i++) {
%>
<option value="<%=receiverNames[i]%>" <%= receiverNames[i].equals(sreceiverName)?"selected":"" %> ><%=receiverNames[i]%>
<%
}
%> </select>
</td>
<td align='right'>
<input type="button" value="STOP" onclick="doStop()">
<input type="button" value="START" onclick="doStart()">
<input type="button" value="STATUS" onclick="doStatus()">
<input type="button" value="RESET" onclick="doReset()">
</td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='center' width='400' bgcolor="#ccccff">Receiver Name</td>
<td align='center' width='200' bgcolor="#ccccff">MSG COUNT</td>
<td align='center' width='200' bgcolor="#ccccff">SUCCESS</td>
</tr>
<%
if(monitorDataTotal != null) {
for(int i=0; i<monitorDataTotal.length; i++) {
%>
<tr bgcolor='white'>
<td align='right' width='400' bgcolor="#ffffff"><%= monitorDataTotal[i][0] %>&nbsp;</td>
<td align='right' width='200' bgcolor="#ffffff"><%= monitorDataTotal[i][1] %>&nbsp;</td>
<td align='right' width='200' bgcolor="#ffffff"><%= monitorDataTotal[i][2] %>&nbsp;</td>
</tr>
<%
}
}
%>
</table><br>
Detail : <%= sreceiverName %><br>
STATUS : 0 -Wait, 1-Runnung, 2- Retry<br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='center' width='500' bgcolor="#ccccff">Receiver Name</td>
<td align='center' width='100' bgcolor="#ccccff">MSG COUNT</td>
<td align='center' width='100' bgcolor="#ccccff">SUCCESS</td>
<td align='center' width='100' bgcolor="#ccccff">STATUS</td>
</tr>
<%
if(monitorData != null) {
for(int i=0; i<monitorData.length; i++) {
%>
<tr bgcolor='white'>
<td align='right' width='400' bgcolor="#ffffff"><%= monitorData[i][0] %>&nbsp;</td>
<td align='right' width='200' bgcolor="#ffffff"><%= monitorData[i][1] %>&nbsp;</td>
<td align='right' width='200' bgcolor="#ffffff"><%= monitorData[i][2] %>&nbsp;</td>
<td align='right' width='200' bgcolor="#ffffff"><%= monitorData[i][3] %>&nbsp;</td>
</tr>
<%
}
}
%>
</table>
</form>
</body>
</html>
+14
View File
@@ -0,0 +1,14 @@
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<html>
<head>
<title>
EAI 조건부 라우팅 정보 테이블
</title>
</head>
<body>
<p>
EAI 조건부 라우팅 정보 테이블 페이지 입니다.<br>
프로퍼티 정보 출력/수정 페이지 작성 필요합니다.
</p>
</body>
</html>
+14
View File
@@ -0,0 +1,14 @@
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<html>
<head>
<title>
EAI 참고 메시지 ID
</title>
</head>
<body>
<p>
EAI 참고 메시지 ID 페이지 입니다.<br>
프로퍼티 정보 출력/수정 페이지 작성 필요합니다.
</p>
</body>
</html>
+126
View File
@@ -0,0 +1,126 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.adapter.AdapterGroupVO"%>
<%@ page import="com.eactive.eai.adapter.AdapterManager"%>
<%@ page import="com.eactive.eai.adapter.AdapterVO"%>
<%
String flag = "";
AdapterManager manager = AdapterManager.getInstance();
List grpList = manager.getAllAdapterGroupNames();
String selectedName = request.getParameter("groupName");
String selectedadp = request.getParameter("adpName");
if (selectedName == null && grpList.size() > 0)
selectedName = (String)grpList.get(0);
AdapterGroupVO grpVO = manager.getAdapterGroupVO(selectedName);
String[] adpNames = grpVO.getAdapterNames();
if (selectedadp == null && adpNames.length > 0)
selectedadp = adpNames[0];
AdapterVO aVO = manager.getAdapterVO(selectedName,selectedadp );
if ("S".equals(request.getParameter("flag"))) {
grpVO = manager.getAdapterGroupVO(selectedName);
adpNames = grpVO.getAdapterNames();
selectedadp = adpNames[0];
aVO = grpVO.getAdapterVO(selectedadp);
}
if (selectedName != null && selectedadp != null) {
aVO = manager.getAdapterVO(selectedName, selectedadp);
}
%>
<html>
<head>
<title>
Adpater Informations
</title>
<script>
function doAction() {
document.frm.submit();
}
function doSelect() {
document.frm.flag.value="S";
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>어댑터 정보</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="flag" value="<%=flag%>">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">어댑터 그룹명 :&nbsp;</td>
<td align='left'>&nbsp;<select name="groupName" onchange="doSelect();" style="width:98%;">
<%
for(int i=0;i < grpList.size(); i++) {
%>
<option value="<%= grpList.get(i) %>" <%= (grpList.get(i).equals(selectedName)) ? "selected" : "" %>><%= grpList.get(i) %>
<%
}
%></select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">어댑터 이름 :&nbsp;</td>
<td align='left'>&nbsp;<select name="adpName" onchange="doAction();" style="width:98%;">
<%
for(int i=0;i < adpNames.length; i++) {
%>
<option value="<%= adpNames[i] %>" <%= (adpNames[i].equals(selectedadp)) ? "selected" : "" %>><%= adpNames[i] %>
<%
}
%></select>
</td>
</tr>
</table><br>
<%
if (aVO != null) {
%>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 어뎁터업무 이름 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="adptBwkNm" style="width:98%;" value="<%=aVO.getName()%>" readonly></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 리스너클래스명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="listenerClass" style="width:98%;" value="<%=aVO.getListenerClass()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 프라퍼티 그룹명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="propGroupName" style="width:98%;" value="<%=aVO.getPropGroupName()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 테스터클래스명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="testCallClass" style="width:98%;" value="<%=aVO.getTestCallClass()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 어뎁터 상태 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="status" style="width:98%;" value="<%=aVO.isStatus()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; AdapterVO : &nbsp;</td>
<td align='left' style="height:40px;"><%=aVO.toString()%></td>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>
+184
View File
@@ -0,0 +1,184 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.adapter.AdapterGroupVO"%>
<%@ page import="com.eactive.eai.adapter.AdapterManager"%>
<%@ page import="com.eactive.eai.adapter.AdapterVO"%>
<%
AdapterManager manager = AdapterManager.getInstance();
List alls = manager.getAllAdapterGroupNames();
String action = request.getParameter("actionType");
String selectedKey = request.getParameter("selectedKey");
if (selectedKey == null && alls.size() > 1) {
selectedKey = (String)alls.get(0);
}
AdapterGroupVO vo = null;
if (selectedKey != null) {
vo = manager.getAdapterGroupVO(selectedKey);
}
%>
<html>
<head>
<title>
Adpater Informations
</title>
<script>
function doAction() {
document.frm.submit();
}
function doSearch(){
var searchValue = document.frm.searchTxt.value;
document.frm.selectedKey.value = searchValue;
document.frm.submit();
}
function detail(grpName,adpName){
console.log(grpName);
var url = 'adapter.jsp?groupName='+grpName+'&adpName='+adpName;
msgWindow=window.open(encodeURI(url));
}
function enterEvent(){
if(window.event.keyCode==13){
doSearch();
}
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>어댑터 그룹정보</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td rowspan="2" align='right' width='220' bgcolor="#ccccff">어댑터그룹명 :&nbsp;&nbsp;</td>
<td align='left' >&nbsp;<select name="selectedKey" onchange="doAction();" style="width:98%">
<%
for(int i=0;i < alls.size(); i++) {
%>
<option value="<%= alls.get(i) %>" <%= (alls.get(i).equals(selectedKey)) ? "selected" : "" %>><%= alls.get(i) %>
<%
}
%></select>
</td>
<td rowspan="2" ><input type="button" name="search" value="search" onClick="doSearch()" /></td>
</tr>
<tr bgcolor='white'>
<td align='left' >&nbsp;<input type="edit" style="width:98%;" name="searchTxt" onkeydown="enterEvent()" value="<%=selectedKey%>" /></td>
</tr>
</table><br>
</form>
<%
if (vo != null) {
%>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 어댑터 그룹명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="name" style="width:98%" value="<%=vo.getName()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 업무구분코드 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="eaiBizCode" style="width:98%" value="<%=vo.getEaiBizCode()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 표준/비표준 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="standard" style="width:98%" value="<%=vo.getAdptrMsgPtrnCd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 어댑터 사용구분 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="refClass" style="width:98%" value="<%=vo.isUsedFlag()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 송수신 로그여부 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="srLogFlag" style="width:98%" value="<%=vo.isSrLogFlag()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; IN/OUT 구분 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="gubun" style="width:98%" value="<%=vo.getGubun()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 어뎁터 유형 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="type" style="width:98%" value="<%=vo.getType()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 메시지타입 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="msgType" style="width:98%" value="<%=vo.getMessageType()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 참조 클래스명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="refClass" style="width:98%" value="<%=vo.getRefClass()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; KESA F/W 사용여부 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="kefsUseYn" style="width:98%" value="<%=vo.getKesaUseYn()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 특정 LU 사용여부 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="luUseYn" style="width:98%" value="<%=vo.isSpcfcLUUseYn()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 대외기관코드<br>(표준전문셋팅) : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="osidinstiNo" style="width:98%" value="<%=vo.getOsidInstiNo()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 어댑터 기관코드<br>(대외기관명) : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="adptInstiCd" style="width:98%" value="<%=vo.getAdptrInstiCode()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 업체코드 데이터<br>(업무데이터 추출 룰) : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="companyData" style="width:98%" value="<%=vo.getCompanyCodeData()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; TAS 어댑터 여부 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="tasAdptYn" style="width:98%" value="<%=vo.getTestMasterYn()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; 어댑터 별명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="nickName" style="width:98%" value="<%=vo.getAdptrNickName()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='220' bgcolor="#ccccff">&nbsp; AdapterGroupVO.toString() : &nbsp;</td>
<td align='left'><%=vo.toString()%></td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td bgcolor="#003366">&nbsp;<font color="yellow"><b>어뎁터업무 이름</b></font></td>
<td bgcolor="#003366">&nbsp;<font color="yellow"><b>리스너클래스명</b></font></td>
<td bgcolor="#003366">&nbsp;<font color="yellow"><b>프라퍼티 그룹명</b></font></td>
<td bgcolor="#003366">&nbsp;<font color="yellow"><b>테스터클래스명</b></font></td>
<td bgcolor="#003366">&nbsp;<font color="yellow"><b>어댑터 정보</b></font></td>
</tr>
<%
if (vo != null) {
Iterator adtIt = vo.getAdapters();
while(adtIt.hasNext()) {
AdapterVO adtVO = (AdapterVO)adtIt.next();
%>
<tr bgcolor='white'>
<td align='left'><input type="text" name="adptBwkNm" value="<%=adtVO.getName()%>" readonly></td>
<td align='left'><input type="text" name="listenerClass" value="<%=adtVO.getListenerClass()%>"></td>
<td align='left'><input type="text" name="propGroupName" value="<%=adtVO.getPropGroupName()%>"></td>
<td align='left'><input type="text" name="testCallClass" value="<%=adtVO.getTestCallClass()%>"></td>
<td align='left'><input type="button" name="detail" value="detail" onClick="detail('<%=vo.getName()%>','<%=adtVO.getName()%>')" /></td>
</tr>
<%
}
}
%>
<%
}
%>
</table>
</body>
</html>
+165
View File
@@ -0,0 +1,165 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.b2badaptermapping.B2BAdapterMapManager"%>
<%@ page import="com.eactive.eai.common.b2badaptermapping.*"%>
<%@ page import="java.util.HashMap"%>
<%!
/**
* <pre>
* 문자열을 받아서 널이면 제로스트링을, 아니면 트림된 문자열을 리턴.
* </pre>
* @param String 변환 대상
* @return 'String'
*/
public static String checkNull( String str ) {
String sResult = new String();
if ( str == null ) {
sResult = "";
}
else {
sResult = str.trim();
}
return sResult;
}
%>
<%
B2BAdapterMapManager manager = B2BAdapterMapManager.getInstance();
String action = request.getParameter("actionType");
String[] alls = manager.getAllKeyNames();
String selectedKey = request.getParameter("selectedKey");
if(selectedKey == null && alls.length>=1) {
selectedKey = alls[0];
}
if ("reload".equals(action)){
//manager.reload(selectedKey);
}else if ("reloadAll".equals(action)){
manager.reload();
}else {
;
}
B2BAdapterMapVO vo = null;
if(selectedKey!=null) {
vo = manager.getB2BAdapterMap(selectedKey);
}
%>
<html>
<head>
<title>
B2BAdapterMapManager
</title>
<script>
function doAction() {
document.frm.submit();
}
function managerReload(){
document.frm.actionType.value="reload";
document.frm.submit();
}
function managerReloadAll(){
document.frm.actionType.value="reloadAll";
document.frm.submit();
}
function doSearch(){
var searchValue = document.frm.searchTxt.value;
document.frm.selectedKey.value = searchValue;
document.frm.submit();
}
function enterEvent(){
if(window.event.keyCode==13){
doSearch();
}
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>라우팅 특정포트 매핑 관리</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td rowspan=2 align='right' width='350' bgcolor="#ccccff">EAI 서비스 코드 :&nbsp;&nbsp;</td>
<td align='left'>&nbsp;<select name="selectedKey" onchange="doAction();"style="width:98%" >
<%
for(int i=0;i<alls.length;i++) {
%>
<option value="<%=alls[i]%>" <%= (alls[i].equals(selectedKey)) ? "selected" : "" %> ><%=alls[i]%>
<%
}
%></select>
</td>
<!-- td width='50'><input type="button" name="reload" value="reload" onClick="managerReload()" /></td -->
<td width='70'><input type="button" name="reloadAll" value="reloadAll" onClick="managerReloadAll()" /></td>
</tr>
<tr bgcolor='white'>
<td align='left' >&nbsp;<input type="edit" style="width:98%;" name="searchTxt" onkeydown="enterEvent()" value="<%=selectedKey%>" style="width:98%"/></td>
<td colspan=2 align="center"><input type="button" name="search" value="search" onClick="doSearch()" /></td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan='2' bgcolor="#003366">&nbsp; <font color="yellow"><b>내용</b> &nbsp;</font></td>
</tr>
<%
if(vo != null ){
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; EAI서버인스턴스명 : &nbsp;</td>
<td align='left' style="height: 40px;">&nbsp;<input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=vo.getEaiInstCd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; EAI서비스코드 : &nbsp;</td>
<td align='left' style="height: 40px;">&nbsp;<input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=vo.getEaiSvcCd()%>"></td>
</tr>
<%
String[] fkeys = vo.getAllKeyNames();
for(int i=0; i< fkeys.length; i++) {
B2BAdapterMapFldVO fld = vo.getB2BAdapterMapFld(fkeys[i]);
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">MAP FIELD : (<%=fkeys[i]%>)&nbsp;</td>
<td align='left' style="height: 40px;">&nbsp;</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 기관코드 : &nbsp;</td>
<td align='left' style="height: 40px;">&nbsp;<input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=fld.getB2bExtnlInstiCd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp;세부업무구분명 : &nbsp;</td>
<td align='left' style="height: 40px;">&nbsp;<input type="text" name="LOADSEQUENCE" style="width:98%" value="<%=fld.getBzwkVal()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 어뎁터업무그룹명 : &nbsp;</td>
<td align='left' style="height: 40px;">&nbsp;<input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=fld.getAdapterGroupName()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 어뎁터업무이름 : &nbsp;</td>
<td align='left' style="height: 40px;">&nbsp;<input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=fld.getAdapterName()%>"></td>
</tr>
<%
}
}
%>
</table>
</form>
</body>
</html>
+153
View File
@@ -0,0 +1,153 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.b2bextractor.B2BExtractManager"%>
<%@ page import="com.eactive.eai.common.b2bextractor.B2BExtractVO"%>
<%@ page import="java.util.HashMap"%>
<%!
/**
* <pre>
* 문자열을 받아서 널이면 제로스트링을, 아니면 트림된 문자열을 리턴.
* </pre>
* @param String 변환 대상
* @return 'String'
*/
public static String checkNull( String str ) {
String sResult = new String();
if ( str == null ) {
sResult = "";
}
else {
sResult = str.trim();
}
return sResult;
}
%>
<%
B2BExtractManager manager = B2BExtractManager.getInstance();
String[] alls = manager.getAllKeyNames();
String action = request.getParameter("actionType");
String selectedKey = request.getParameter("selectedKey");
int seq = 1;
if(selectedKey == null && alls.length>=1) {
selectedKey = alls[0];
}
if ("reload".equals(action)){
// 마지막 제거
manager.reload(selectedKey.substring(0,selectedKey.length()-1));
}else if ("reloadAll".equals(action)){
manager.reload();
}else {
;
}
B2BExtractVO vo = null;
if(selectedKey!=null) {
vo = manager.getB2BExtract(selectedKey);
}
%>
<html>
<head>
<title>
B2BExtractManager
</title>
<script>
function doAction() {
document.frm.submit();
}
function managerReload(){
document.frm.actionType.value="reload";
document.frm.submit();
}
function managerReloadAll(){
document.frm.actionType.value="reloadAll";
document.frm.submit();
}
function doSearch(){
var searchValue = document.frm.svcCd.value + document.frm.svcPssSeq.value;
document.frm.selectedKey.value = searchValue;
document.frm.submit();
}
function enterEvent(){
if(window.event.keyCode==13){
doSearch();
}
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>라우팅 필드추출 정보 관리</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<input type="hidden" name="actionSeq" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">IF서비스코드+IF서비스처리번호 :&nbsp;&nbsp;</td>
<td align='left'>&nbsp;<select name="selectedKey" onchange="doAction();" style="width:98%">
<%
for(int i=0;i<alls.length;i++) {
%>
<option value="<%=alls[i]%>" <%= (alls[i].equals(selectedKey)) ? "selected" : "" %> ><%=alls[i]%>
<%
}
%></select>
</td>
<td width='50'><input type="button" name="reload" value="reload" onClick="managerReload()" /></td>
<td width='70'><input type="button" name="reloadAll" value="reloadAll" onClick="managerReloadAll()" /></td>
</tr>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">IF서비스코드 :&nbsp;&nbsp;</td>
<td align='left' >&nbsp;<input type="edit" name="svcCd" onkeydown="enterEvent()" style="width:98%" value="<%=vo.getEaiSvcCd()%>" /></td>
<td colspan=2 rowspan=2 align='center'><input type="button" name="search" value="search" onClick="doSearch()" /></td>
</tr>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">IF서비스처리번호 :&nbsp;&nbsp;</td>
<td align='left' >&nbsp;<input type="edit" name="svcPssSeq" onkeydown="enterEvent()" style="width:98%" value="<%=vo.getSvcPssSeq()%>" /></td>
</tr>
</table>
<br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan='2' bgcolor="#003366">&nbsp; <font color="yellow"><b>내용</b> &nbsp;</font></td>
</tr>
<%
if(vo != null ){
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; IF서비스코드 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=vo.getEaiSvcCd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; IF서비스 처리번호 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=vo.getSvcPssSeq()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 기관코드추출 CLASS : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="LOADSEQUENCE" style="width:98%" value="<%=vo.getRouteActionName()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 어댑터라우팅추출 CLASS : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=vo.getAdapterActionName()%>"></td>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>
+250
View File
@@ -0,0 +1,250 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.b2bservice.B2BServiceManager"%>
<%@ page import="com.eactive.eai.common.b2bservice.B2BServiceVO"%>
<%@ page import="java.util.HashMap"%>
<%!
/**
* <pre>
* 문자열을 받아서 널이면 제로스트링을, 아니면 트림된 문자열을 리턴.
* </pre>
* @param String 변환 대상
* @return 'String'
*/
public static String checkNull( String str ) {
String sResult = new String();
if ( str == null ) {
sResult = "";
}
else {
sResult = str.trim();
}
return sResult;
}
%>
<%
B2BServiceManager manager = B2BServiceManager.getInstance();
String action = request.getParameter("actionType");
String [] alls = manager.getAllKeys();
String selectedKey = request.getParameter("selectedKey");
if(selectedKey == null && alls.length>=1) {
selectedKey = alls[0];
}
if ("reload".equals(action)){
// 마지막 제거
manager.reload(selectedKey.substring(0,selectedKey.length()-1));
}else if ("reloadAll".equals(action)){
manager.reload();
}else {
;
}
B2BServiceVO vo = null;
if(selectedKey!=null) {
vo = manager.getB2BServiceVO(selectedKey);
}
%>
<html>
<head>
<title>
B2BServiceManager
</title>
<script>
function doAction() {
document.frm.submit();
}
function managerReload(){
document.frm.actionType.value="reload";
document.frm.submit();
}
function managerReloadAll(){
document.frm.actionType.value="reloadAll";
document.frm.submit();
}
function doSearch(){
var searchValue = document.frm.instiCd.value + document.frm.searchSvcPssSeq.value;
document.frm.selectedKey.value = searchValue;
document.frm.submit();
}
function enterEvent(){
if(window.event.keyCode==13){
doSearch();
}
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>라우팅 B2B기관 정보 관리</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<input type="hidden" name="actionSeq" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">기관코드 + 서비스처리순서 :&nbsp;</td>
<td align='left'>&nbsp;<select name="selectedKey" onchange="doAction();">
<%
for(int i=0;i<alls.length;i++) {
%>
<option value="<%=alls[i]%>" <%= (alls[i].equals(selectedKey)) ? "selected" : "" %> ><%=alls[i]%>
<%
}
%></select>
</td>
<td width='50'><input type="button" name="reload" value="reload" onClick="managerReload()" /></td>
<td width='70'><input type="button" name="reloadAll" value="reloadAll" onClick="managerReloadAll()" /></td>
</tr>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">기관코드 : &nbsp;&nbsp;</td>
<td align='left' >&nbsp;<input type="edit" name="instiCd" onkeydown="enterEvent()" value="<%=vo.getB2bExtnlInstiCd()%>" /></td>
<td colspan=2 rowspan=2 align='center'><input type="button" name="search" value="search" onClick="doSearch()" /></td>
</tr>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">서비스처리번호 : &nbsp;&nbsp;</td>
<td align='left' >&nbsp;<input type="edit" name="searchSvcPssSeq" onkeydown="enterEvent()" value="<%=vo.getSvcPssSeq()%>" /></td>
</tr>
</table>
<br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan='2' bgcolor="#003366">&nbsp; <font color="yellow"><b>내용</b> &nbsp;</font></td>
</tr>
<%
if(vo != null ){
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp;기관코드 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="svcPssSeq" style="width:98%" value="<%=vo.getB2bExtnlInstiCd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp;서비스처리순서 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="svcPssSeq" style="width:98%" value="<%=vo.getSvcPssSeq()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 수동인터페이스유형 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="psvItfTp" style="width:98%" value="<%=vo.getPsvItfTp()%>">
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 수동업무시스템명 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="psvBwkSysNm" style="width:98%" value="<%=vo.getPsvBwkSysNm()%>"></td>
</tr>
<%--
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 수동시스템ID : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="psvSysID" style="width:98%" value="<%=vo.getPsvSysID()%>"></td>
</tr>
--%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 수동시스템서비스코드 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="psvSysSvcCd" style="width:98%" value="<%=vo.getPsvSysSvcCd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 수동시스템인터페이스유형 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="psvSysItfTp" style="width:98%" value="<%=vo.getPsvSysItfTp()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; FailOver여부 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="flOvrCls" style="width:98%" value="<%=vo.getFlOvrCls()%>">
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 변환유무 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="cnvEn" style="width:98%" value="<%=vo.getCnvEn()%>">
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 변환메시지ID : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="cnvMsgID" style="width:98%" value="<%=vo.getCnvMsgID()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 기본응답메시지비교값 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="bsRspMsgCprVl" style="width:98%" value="<%=vo.getBsRspMsgCprVl()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 기본응답변환유무 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="bsRspCnvEn" style="width:98%" value="<%=vo.getBsRspCnvEn()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 기본응답변환메시지ID : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="bsRspCnvMsgID" style="width:98%" value="<%=vo.getBsRspCnvMsgID()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 오류응답메시지비교값 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="errRspMsgCprVl" style="width:98%" value="<%=vo.getErrRspMsgCprVl()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 오류응답변환유무 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="errRspCnvEn" style="width:98%" value="<%=vo.getErrRspCnvEn()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 오류응답변환메시지ID : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="errRspCnvMsgID" style="width:98%" value="<%=vo.getErrRspCnvMsgID()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 다음서비스처리순서 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="nxtSvcPssSeq" style="width:98%" value="<%=vo.getNxtSvcPssSeq()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; Outbound라우팅명 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="outbRtnNm" style="width:98%" value="<%=vo.getOutbRtnNm()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 타임아웃값 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="tmoVl" style="width:98%" value="<%=vo.getTmoVl()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 보상서비스처리코드 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="cpnsSvcPssCd" style="width:98%" value="<%=vo.getCpnsSvcPssCd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 추가삭제여부 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="supplDelYn" style="width:98%" value="<%=vo.getSupplDelYn()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 헤더제어구분코드 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="hdrCtrlDstcd" style="width:98%" value="<%=vo.getHdrCtrlDstcd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 참고클래스명 : &nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="hdrRefClsName" style="width:98%" value="<%=vo.getHdrRefClsName()%>"></td>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>
+151
View File
@@ -0,0 +1,151 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.EAITable"%>
<%@ page import="com.eactive.eai.common.bizkey.BizKeyFldVO"%>
<%@ page import="com.eactive.eai.common.bizkey.BizKeyManager"%>
<%@ page import="com.eactive.eai.common.bizkey.BizKeyVO"%>
<%
BizKeyManager manager = BizKeyManager.getInstance();
String[] alls = manager.getAllKeyNames();
String action = request.getParameter("actionType");
String selectedKey = request.getParameter("selectedKey");
if(selectedKey == null && alls.length > 1) {
selectedKey = alls[0];
}
if ("reload".equals(action)){
//마지막 TR 을 빼고 처리 해야됨
manager.reload(selectedKey.substring(0, selectedKey.length()-2), selectedKey.substring(selectedKey.length()-2));
}else if ("reloadAll".equals(action)){
manager.reload();
}else {
;
}
BizKeyVO vo = null;
if(selectedKey != null) {
vo = manager.getBizKey(selectedKey);
}
%>
<html>
<head>
<title>
BizKey Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function managerReload(){
document.frm.actionType.value="reload";
document.frm.submit();
}
function managerReloadAll(){
document.frm.actionType.value="reloadAll";
document.frm.submit();
}
function doSearch(){
var searchValue = document.frm.searchTxt.value;
document.frm.selectedKey.value = searchValue;
document.frm.submit();
}
function enterEvent(){
if(window.event.keyCode==13){
doSearch();
}
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>로그조회키 관리</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td rowspan=2 align='right' width='350' bgcolor="#ccccff">로그조회키 :&nbsp;&nbsp;</td>
<td align='left'>&nbsp;<select name="selectedKey" onchange="doAction();"style="width:98%">
<%
for(int i=0;i<alls.length;i++) {
%>
<option value="<%=alls[i]%>" <%= (alls[i].equals(selectedKey)) ? "selected" : "" %>><%=alls[i]%>
<%
}
%></select>
</td>
<td width='50'><input type="button" name="reload" value="reload" onClick="managerReload()" /></td>
<td width='70'><input type="button" name="reloadAll" value="reloadAll" onClick="managerReloadAll()" /></td>
</tr>
<tr bgcolor='white'>
<td align='left' >&nbsp;<input type="edit" style="width:98%;" name="searchTxt" onkeydown="enterEvent()" value="<%=selectedKey%>" /></td>
<td colspan=2 align="center"><input type="button" name="search" value="search" onClick="doSearch()" /></td>
</tr>
</table>
<br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right'bgcolor="#003366">&nbsp; <font color="yellow"><b>Property Key</b> &nbsp;</font></td>
<td align='left' bgcolor="#003366">&nbsp;<font color="yellow">&nbsp; <b>Property Value</b></font></td>
</tr>
<%
if(vo != null) {
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; EAI서비스코드 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="EaiSvcCd" style="width:98%" value="<%=vo.getEaiSvcCd()%>" readonly></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 추출구분 : &nbsp;</td>
<td align='left' style="height:40px;">
<%
int exrClassLength = EAITable.EXR_CLASS_TYPES.length;
String exrClassTypeName = "";
for(int i=0; i<exrClassLength; i++) {
if(EAITable.EXR_CLASS_TYPES[i].equals(vo.getExrClsNm())) exrClassTypeName = EAITable.EXR_CLASS_TYPES[i];
}
%>&nbsp;<input type="text" name="ExrClsNm" style="width:98%" value="<%=exrClassTypeName%>" readonly>
</td>
</tr>
<%
int fldSize = vo.getBizKeyFldLength();
for(int i=0; i<fldSize; i++) {
%>
<tr bgcolor='white'>
<td align='right' width="350" height="5" bgcolor="#003366" colspan="2">&nbsp;<font color="yellow"><b>FldPrcssNo[<%= vo.getBizKeyFld(i).getColPssSeq() %>]</b> &nbsp;</font></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 메시지유형 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<select name="MsgTp" style="width:98%">
<%
int msgTypeLength = EAITable.MSG_TYPES.length;
for(int j=0; j<msgTypeLength; j++) {
%>
<option value="<%=EAITable.MSG_TYPES[j]%>" <%= (EAITable.MSG_TYPES[j].equals(vo.getBizKeyFld(i).getMsgTp())) ? "selected" : "" %>><%=EAITable.MSG_TYPES[j]%>
<%
}
%>
</select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 업무필드명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="BwkColNm" style="width:98%" value="<%=vo.getBizKeyFld(i).getBwkColNm()%>"></td>
</tr>
<%
}
}
%>
</table>
</form>
</body>
</html>
+41
View File
@@ -0,0 +1,41 @@
<%@ page import="java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.kbstar.eai.common.businessday.*"%>
<%
BusinessDayManager manager = BusinessDayManager.getInstance();
Map<String, BusinessDayVO> messages = manager.getAllBusinessDays();
%>
<html>
<head>
<title>일자전환 변경대상 정보</title>
<script>
function doAction() {
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>일자전환 변경대상 정보</b> <br><br>
</p>
<form name="frm" action="">
<table width="450" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='center' width='250' bgcolor="#ccccff">EAI 서비스코드</td>
<td align='center' width='200' bgcolor="#ccccff">전문유효일자</td>
</tr>
<%
Iterator it = messages.keySet().iterator();
for(int i=0;it.hasNext();i++) {
BusinessDayVO vo = (BusinessDayVO)messages.get((String)it.next());
%>
<tr bgcolor='white'>
<td align='center'><%= vo.getEAISvcName() %></td>
<td align='center'><%= vo.getTelgmValdYmd() %></td>
</tr>
<% } %>
</table>
</form>
</body>
</html>
+222
View File
@@ -0,0 +1,222 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.c2rservice.C2RServiceManager"%>
<%@ page import="com.eactive.eai.common.c2rservice.C2RServiceVO"%>
<%@ page import="java.util.HashMap"%>
<%!
/**
* <pre>
* 문자열을 받아서 널이면 제로스트링을, 아니면 트림된 문자열을 리턴.
* </pre>
* @param String 변환 대상
* @return 'String'
*/
public static String checkNull( String str ) {
String sResult = new String();
if ( str == null ) {
sResult = "";
}
else {
sResult = str.trim();
}
return sResult;
}
%>
<%
String action = request.getParameter("actionType");
C2RServiceManager manager = C2RServiceManager.getInstance();
String key[] = manager.getAllKeys();
String selectedKey = request.getParameter("selectKeys");
int seq = 1;
if(selectedKey == null && key.length>0) {
selectedKey = key[0];
}
C2RServiceVO sm = null;
if(selectedKey!=null) {
sm = manager.getC2RServiceVO(selectedKey);
}
%>
<html>
<head>
<title>
C2RServiceManager
</title>
<script>
function doAction() {
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>C2RService Configuration</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<input type="hidden" name="actionSeq" value="">
<table border='0' width="800" >
<tr>
<td align='left'>
<table width="450" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff"><label value="eaiSvcCds : "/>&nbsp;</td>
<td align='left'>&nbsp;<select name="selectKeys" onchange="doAction();">
<%
for(int i=0;i<key.length;i++) {
%>
<option value="<%=key[i]%>" <%= (key[i].equals(selectedKey)) ? "selected" : "" %> ><%=key[i]%>
<%
}
%></select>
</td>
</tr>
</table>
</td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan='2' width='350' bgcolor="#003366">&nbsp; <font color="yellow"><b>내용</b> &nbsp;</font></td>
</tr>
<%
if(sm != null ){
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp;기관코드 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="svcPssSeq" size='60' value="<%=sm.getC2rExtnlInstiCd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp;서비스처리순서 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="svcPssSeq" size='60' value="<%=sm.getSvcPssSeq()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 수동인터페이스유형 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="psvItfTp" size='60' value="<%=sm.getPsvItfTp()%>">
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 수동업무시스템명 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="psvBwkSysNm" size='60' value="<%=sm.getPsvBwkSysNm()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 수동시스템ID : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="psvSysID" size='60' value="<%=sm.getPsvSysID()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 수동시스템서비스코드 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="psvSysSvcCd" size='60' value="<%=sm.getPsvSysSvcCd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 수동시스템인터페이스유형 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="psvSysItfTp" size='60' value="<%=sm.getPsvSysItfTp()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; FailOver여부 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="flOvrCls" size='60' value="<%=sm.getFlOvrCls()%>">
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 변환유무 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="cnvEn" size='60' value="<%=sm.getCnvEn()%>">
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 변환메시지ID : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="cnvMsgID" size='60' value="<%=sm.getCnvMsgID()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 기본응답메시지비교값 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="bsRspMsgCprVl" size='60' value="<%=sm.getBsRspMsgCprVl()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 기본응답변환유무 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="bsRspCnvEn" size='60' value="<%=sm.getBsRspCnvEn()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 기본응답변환메시지ID : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="bsRspCnvMsgID" size='60' value="<%=sm.getBsRspCnvMsgID()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 오류응답메시지비교값 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="errRspMsgCprVl" size='60' value="<%=sm.getErrRspMsgCprVl()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 오류응답변환유무 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="errRspCnvEn" size='60' value="<%=sm.getErrRspCnvEn()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 오류응답변환메시지ID : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="errRspCnvMsgID" size='60' value="<%=sm.getErrRspCnvMsgID()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 다음서비스처리순서 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="nxtSvcPssSeq" size='60' value="<%=sm.getNxtSvcPssSeq()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; Outbound라우팅명 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="outbRtnNm" size='60' value="<%=sm.getOutbRtnNm()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 타임아웃값 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="tmoVl" size='60' value="<%=sm.getTmoVl()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 보상서비스처리코드 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="cpnsSvcPssCd" size='60' value="<%=sm.getCpnsSvcPssCd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 추가삭제여부 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="supplDelYn" size='60' value="<%=sm.getSupplDelYn()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 헤더제어구분코드 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="hdrCtrlDstcd" size='60' value="<%=sm.getHdrCtrlDstcd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 참고클래스명 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="hdrRefClsName" size='60' value="<%=sm.getHdrRefClsName()%>"></td>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>
+76
View File
@@ -0,0 +1,76 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.adapter.AdapterGroupVO"%>
<%@ page import="com.eactive.eai.adapter.AdapterManager"%>
<%@ page import="com.eactive.eai.adapter.Keys"%>
<%@ page import="com.eactive.eai.inbound.processor.RequestProcessor"%>
<%
AdapterManager manager = AdapterManager.getInstance();
List all = manager.getAllAdapterGroupNames();
String flag = request.getParameter("flag");
if(flag!=null && flag.equals("reset")) {
RequestProcessor.resetCount();
}
%>
<html>
<head>
<META HTTP-EQUIV="refresh" Content="5; /ESBWeb/common/currentTx.jsp">
<title>
어댑터 별 진행 서비스 수
</title>
<script>
function go() {
document.frm.submit();
}
</script>
</head>
<body>
<p>
RequestProcessor 처리 현황
</p>
<form name="frm" method="post">
<input type="hidden" name="flag" value="reset">
<table width="450" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='center'>현재수신 건수</td>
<td align='center'>에러건수</td>
<td align='center'>초기화</td>
</tr>
<tr bgcolor='white'>
<td align='center'><%= RequestProcessor.rcvCount()%></td>
<td align='center'><%= RequestProcessor.errCount()%></td>
<td align='center'><input type="submit" value="reset"></td>
</tr>
</table>
</form>
<br>
<p>
어댑터 별 진행 서비스 수
</p>
<table width="450" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='center'>이름</td>
<td align='center'>상태</td>
<td align='center'>진행건수</td>
</tr>
<%
for(int i=0;i<all.size();i++) {
String name = (String)all.get(i);
AdapterGroupVO g = (AdapterGroupVO)manager.getAdapterGroupVO(name);
%>
<tr bgcolor='white'>
<td align='right'><%=g.getName()%></td>
<td align='center'><%=g.isStarted()%></td>
<td align='center'><%=g.currentTx()%></td>
</tr>
<% }%>
</table>
</body>
</html>
+17
View File
@@ -0,0 +1,17 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ page import="com.eactive.eai.common.web.FrontFilter"%>
<html>
<head>
<title>
Currrnet Tx in Web Application
</title>
</head>
<body>
<p>
Currrnet Tx in Web Application
</p>
<label>Current Count: <%=FrontFilter.count()%></label>
</body>
</html>
+366
View File
@@ -0,0 +1,366 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.EAITable"%>
<%@ page import="com.eactive.eai.common.message.EAIMessage"%>
<%@ page import="com.eactive.eai.common.message.ServiceMessage"%>
<%@ page import="com.eactive.eai.common.message.EAIMessageManager"%>
<%
EAIMessageManager manager = EAIMessageManager.getInstance();
String[] alls = manager.getAllEAISvcCd();
String action = request.getParameter("actionType");
String selectedKey = request.getParameter("selectedKey");
if(selectedKey == null && alls.length>=1) {
selectedKey = alls[0];
}
if ("reload".equals(action)){
manager.reload(selectedKey);
}else if ("reloadAll".equals(action)){
manager.reload();
}else {
;
}
EAIMessage vo = null;
if(selectedKey!=null) {
vo = manager.getEAIMessage(selectedKey);
}
%>
<html>
<head>
<title>
EAIMessage Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function managerReload(){
document.frm.actionType.value="reload";
document.frm.submit();
}
function managerReloadAll(){
document.frm.actionType.value="reloadAll";
document.frm.submit();
}
function openSvcMsgs(id){
var url = 'svcmessages.jsp?id='+id;
msgWindow=window.open(url);
}
function doSearch(){
var searchValue = document.frm.searchTxt.value;
document.frm.selectedKey.value = searchValue;
document.frm.submit();
}
function enterEvent(){
if(window.event.keyCode==13){
doSearch();
}
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>EAI 서비스 코드관리</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td rowspan="2" align='right' width='350' bgcolor="#ccccff">EAI서비스코드 </td>
<td align='left'>&nbsp;<select name="selectedKey" onchange="doAction();"style="width:98%">
<%
for(int i=0;i<alls.length;i++) {
%>
<option value="<%=alls[i]%>" <%= (alls[i].equals(selectedKey)) ? "selected" : "" %>><%=alls[i]%>
<%
}
%></select>
</td>
<td width='50'><input type="button" name="reload" value="reload" onClick="managerReload()" /></td>
<td width='70'><input type="button" name="reloadAll" value="reloadAll" onClick="managerReloadAll()" /></td>
</tr>
<tr bgcolor='white'>
<td align='left' >&nbsp;<input type="edit" name="searchTxt" onkeydown="enterEvent()" value="<%=selectedKey%>" style="width:98%" /></td>
<td colspan="2" align="center" ><input type="button" name="search" value="search" onClick="doSearch()" /></td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan=2 bgcolor="#003366">&nbsp; <font color="yellow"><b>내용</b> &nbsp;</font></td>
</tr>
<%
if(vo != null) {
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; EAI서비스코드 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="eAISvcCd" style="width:98%" value="<%=vo.getEAISvcCd()%>" readonly></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; EAI서버인스턴스명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="eAISvrInstNm" style="width:98%" value="<%=vo.getEAISvrInstNm()%>" readonly></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 서비스시간유무 : &nbsp;</td>
<td align='left' style="height:40px;">
&nbsp;<select name="svcTmEn" style="width:98%">
<%
int svcTmEnLength = EAITable.SVC_TIME_EXIST.length;
for(int i=0; i<svcTmEnLength; i++) {
%>
<option value="<%=EAITable.SVC_TIME_EXIST[i]%>" <%= (EAITable.SVC_TIME_EXIST[i].equals(vo.getSvcTmEn())) ? "selected" : "" %>><%=EAITable.SVC_TIME_EXIST[i]%>
<%
}
%>
</select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 서비스동시사용 : &nbsp;</td>
<td align='left' style="height:40px;">
&nbsp;<select name="svcTsmtUsgTp" style="width:98%">
<%
int svcTsmtUsgTpLength = EAITable.SVC_SAME_TIME_TYPE.length;
for(int i=0; i<svcTsmtUsgTpLength; i++) {
%>
<option value="<%=EAITable.SVC_SAME_TIME_TYPE[i]%>" <%= (EAITable.SVC_SAME_TIME_TYPE[i].equals(vo.getSvcTsmtUsgTp())) ? "selected" : "" %>><%=EAITable.SVC_SAME_TIME_TYPE[i]%>
<%
}
%>
</select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 서비스처리유형 : &nbsp;</td>
<td align='left' style="height:40px;">
&nbsp;<select name="svcPssTp" style="width:98%">
<%
int svcPssTpLength = EAITable.SVC_PROCESS_TYPE.length;
for(int i=0; i<svcPssTpLength; i++) {
%>
<option value="<%=EAITable.SVC_PROCESS_TYPE[i]%>" <%= (EAITable.SVC_PROCESS_TYPE[i].equals(vo.getSvcPssTp())) ? "selected" : "" %>><%=EAITable.SVC_PROCESS_TYPE[i]%>
<%
}
%>
</select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; Flow Control라우팅명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="flwCntlRtnNm" style="width:98%" value="<%=vo.getFlwCntlRtnNm()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 통합유형 : &nbsp;</td>
<td align='left' style="height:40px;">
&nbsp;<select name="unifTp" style="width:98%">
<%
int unifTpLength = EAITable.UNIT_TYPE.length;
for(int i=0; i<unifTpLength; i++) {
%>
<option value="<%=EAITable.UNIT_TYPE[i]%>" <%= (EAITable.UNIT_TYPE[i].equals(vo.getUnifTp())) ? "selected" : "" %>><%=EAITable.UNIT_TYPE[i]%>
<%
}
%>
</select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 기동서비스구분 : &nbsp;</td>
<td align='left' style="height:40px;">
&nbsp;<select name="sngSvcCls" style="width:98%">
<%
int sngSvcClsLength = EAITable.START_SVC_CLASSIFICATION.length;
for(int i=0; i<sngSvcClsLength; i++) {
%>
<option value="<%=EAITable.START_SVC_CLASSIFICATION[i]%>" <%= (EAITable.START_SVC_CLASSIFICATION[i].equals(vo.getSngSvcCls())) ? "selected" : "" %>><%=EAITable.START_SVC_CLASSIFICATION[i]%>
<%
}
%>
</select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 서비스처리순서 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="svcPssSeq" style="width:98%" value="<%=vo.getSvcPssSeq()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 로그처리일련번호 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="logPssSno" style="width:98%" value="<%=vo.getLogPssSno()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 서비스전열로그여부 : &nbsp;</td>
<td align='left' style="height:40px;">
&nbsp;<select name="svcWlColLogYn" style="width:98%">
<%
int svcWlColLogYnLength = EAITable.SVC_WHOLE_COL_LOG.length;
for(int i=0; i<svcWlColLogYnLength; i++) {
%>
<option value="<%=EAITable.SVC_WHOLE_COL_LOG[i]%>" <%= (EAITable.SVC_WHOLE_COL_LOG[i].equals(vo.getSvcWlColLogYn())) ? "selected" : "" %>><%=EAITable.SVC_WHOLE_COL_LOG[i]%>
<%
}
%>
</select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 업무구분 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="bwkCls" style="width:98%" value="<%=vo.getBwkCls()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 표준메시지사용구분 : &nbsp;</td>
<td align='left' style="height:40px;">
&nbsp;<select name="stdMsgUsgCls" style="width:98%">
<%
int stdMsgUsgClsLength = EAITable.STANDARD_MSG_USAGE.length;
for(int i=0; i<stdMsgUsgClsLength; i++) {
%>
<option value="<%=EAITable.STANDARD_MSG_USAGE[i]%>" <%= (EAITable.STANDARD_MSG_USAGE[i].equals(vo.getStdMsgUsgCls())) ? "selected" : "" %>><%=EAITable.STANDARD_MSG_USAGE[i]%>
<%
}
%>
</select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 기동시스템인터페이스유형 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="sngSysItfTp" style="width:98%" value="<%=vo.getSngSysItfTp()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이어메시지ID : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="lydMsgID" style="width:98%" value="<%=vo.getLydMsgID()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 서버로그레벨 : &nbsp;</td>
<td align='left' style="height:40px;">
&nbsp;<select name="svrLogLvl" style="width:98%">
<%
int svrLogLvlLength = EAITable.SERVER_LOG_LEVEL.length;
for(int i=0; i<svrLogLvlLength; i++) {
%>
<option value="<%=EAITable.SERVER_LOG_LEVEL[i]%>" <%= (EAITable.SERVER_LOG_LEVEL[i]==vo.getSvrLogLvl()) ? "selected" : "" %>><%=EAITable.SERVER_LOG_LEVEL_TYPE[i]%>
<%
}
%>
</select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 서비스로그레벨 : &nbsp;</td>
<td align='left' style="height:40px;">
&nbsp;<select name="svcLogLvl" style="width:98%">
<%
int svcLogLvlLength = EAITable.SVC_LOG_LEVEL.length;
for(int i=0; i<svcLogLvlLength; i++) {
%>
<option value="<%=EAITable.SVC_LOG_LEVEL[i]%>" <%= (EAITable.SVC_LOG_LEVEL[i]==vo.getSvcLogLvl()) ? "selected" : "" %>><%=EAITable.SVC_LOG_LEVEL[i]%>
<%
}
%>
</select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 오류EAI서비스명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="errEAISvcName" style="width:98%" value="<%=vo.getErrEAISvcName()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 오류요청변환ID명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="dmndErrChngIDName" style="width:98%" value="<%=vo.getDmndErrChngIDName()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 오류요청에러필드명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="dmndErrFldName" style="width:98%" value="<%=vo.getDmndErrFldName()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 오류응답변환ID명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="rspnsErrChngIDName" style="width:98%" value="<%=vo.getRspnsErrChngIDName()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 오류응답에러필드명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="rspnsErrFldName" style="width:98%" value="<%=vo.getRspnsErrFldName()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; EAI서비스 설명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="eAISvcDesc" style="width:98%" value="<%=vo.getEAISvcDesc()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; EAI서버구분코드 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="sevrDstcd" style="width:98%" value="<%=vo.getSevrDstcd()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 그룹사코드 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="groupCoCd" style="width:98%" value="<%=vo.getGroupCoCd()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 거래처리구분 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="tranType" style="width:98%" value="<%=vo.getTranType()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 사용여부 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="useYn" style="width:98%" value="<%=vo.getUseYn()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 서비스처리정보리스트 : &nbsp;</td>
<%
if(vo.getSvcMsgs().size()<=0) {
%>
<td align='left' style="height:40px;">&nbsp; 0건 입니다. &nbsp; </td>
<%
}
else {
%>
<td align='left' >&nbsp;<a href="javascript:openSvcMsgs('<%= vo.getEAISvcCd() %>');"><%=vo.getSvcMsgs().size()%>&nbsp; 건 &nbsp;</a> </td>
<%
}
%>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>
+106
View File
@@ -0,0 +1,106 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.server.EAIServerManager"%>
<%@ page import="com.eactive.eai.common.server.EAIServerVO"%>
<%
EAIServerManager manager = EAIServerManager.getInstance();
String[] alls = manager.getAllEaiSvrInstNm();
String action = request.getParameter("actionType");
String selectedKey = request.getParameter("selectedKey");
if(selectedKey == null && alls.length>=1) {
selectedKey = alls[0];
}
EAIServerVO vo = null;
if(selectedKey!=null) {
vo = manager.getEAIServer(selectedKey);
}
%>
<html>
<head>
<title>
EAIServer Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function doSearch(){
var searchValue = document.frm.searchTxt.value;
document.frm.selectedKey.value = searchValue;
document.frm.submit();
}
function enterEvent(){
if(window.event.keyCode==13){
doSearch();
}
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>서버 관리</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' rowspan=2 width='350' bgcolor="#ccccff">EAI Server 인스턴스명 :&nbsp;&nbsp;</td>
<td align='left' colspan=2>&nbsp;<select name=selectedKey onchange="doAction();">
<%
for(int i=0;i<alls.length;i++) {
%>
<option value="<%=alls[i]%>" <%= (alls[i].equals(selectedKey)) ? "selected" : "" %>><%=alls[i]%>
<%
}
%></select>
</td>
</tr>
<tr bgcolor='white'>
<td align='left' >&nbsp;<input type="edit" name="searchTxt" onkeydown="enterEvent()" value="<%=selectedKey%>" style="width:98%" /></td>
<td colspan="2" align="center" ><input type="button" name="search" value="search" onClick="doSearch()" /></td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan=2 bgcolor="#003366">&nbsp; <font color="yellow"><b>내용</b> &nbsp;</font></td>
</tr>
<%
if(vo != null) {
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 서버 인스턴스명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="name" styel="width:98%" value="<%=vo.getName()%>" readonly></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 서버 아이피 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="address" styel="width:98%" value="<%=vo.getAddress()%>" readonly></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 서버 포트 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="port" styel="width:98%" value="<%=vo.getPort()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 장애극복서버명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="failoverSvr" styel="width:98%" value="<%=vo.getFailoverSvr()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 호스트명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="failoverSvr" styel="width:98%" value="<%=vo.getHostName()%>" ></td>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>
+111
View File
@@ -0,0 +1,111 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.errorcode.ErrorCodeManager"%>
<%@ page import="com.eactive.eai.common.errorcode.ErrorCodeVO"%>
<%
ErrorCodeManager manager = ErrorCodeManager.getInstance();
String[] alls = manager.getAllCodes();
String action = request.getParameter("actionType");
String selectedKey = request.getParameter("selectedKey");
if(selectedKey == null && alls.length>1) {
selectedKey = alls[0];
}
if ("reload".equals(action)){
manager.reload(selectedKey);
}else if ("reloadAll".equals(action)){
manager.reload();
}else {
;
}
ErrorCodeVO vo = null;
if(selectedKey != null){
vo = manager.getMessageVO(selectedKey);
}
%>
<html>
<head>
<title>
Error Code Message Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function managerReload(){
document.frm.actionType.value="reload";
document.frm.submit();
}
function managerReloadAll(){
document.frm.actionType.value="reloadAll";
document.frm.submit();
}
function doSearch(){
var searchValue = document.frm.searchTxt.value;
document.frm.selectedKey.value = searchValue;
document.frm.submit();
}
function enterEvent(){
if(window.event.keyCode==13){
doSearch();
}
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>오류메시지 관리</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td rowspan="2" align='right' width='180' bgcolor="#ccccff"><label value=" "/>오류메시지 코드 :&nbsp;&nbsp;</td>
<td align='left'>&nbsp;<select name="selectedKey" onchange="doAction();"style="width:98%" >
<%
for(int i=0;i<alls.length;i++) {
%>
<option value="<%=alls[i]%>" <%= (alls[i].equals(selectedKey)) ? "selected" : "" %>><%=alls[i]%>
<%
}
%></select>
</td>
<td width='50'><input type="button" name="reload" value="reload" onClick="managerReload()" /></td>
<td width='70'><input type="button" name="reloadAll" value="reloadAll" onClick="managerReloadAll()" /></td>
</tr>
<tr bgcolor='white'>
<td align='left' >&nbsp;<input type="edit" name="searchTxt" onkeydown="enterEvent()" value="<%=selectedKey%>" style="width:98%" /></td>
<td colspan="2" align="center"><input type="button" name="search" value="search" onClick="doSearch()" /></td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan=2 bgcolor="#003366">&nbsp; <font color="yellow"><b>내용</b> &nbsp;</font></td>
</tr>
<% if(vo!=null) { %>
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff">오류메시지 코드 :&nbsp;&nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="text" size="80" value="<%=vo.getMsgKey()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff">오류메시지 :&nbsp;&nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="text" size="80" value="<%=vo.getMsgTxt()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff">조치사항 :&nbsp;&nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="text" size="80" value="<%=vo.getMsgEtc()%>"></td>
</tr>
<% } else { %>
<% } %>
</table>
</form>
</body>
</html>
+48
View File
@@ -0,0 +1,48 @@
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="java.io.*, java.util.*"%>
<%@ page import="com.eactive.eai.agent.firstaccount.ShareMemory" %>
<%
ShareMemory sm = ShareMemory.getInstance();
String accNum = sm.getAccoutName();
String [] accNumArr = accNum.split(",");
%>
<html>
<head>
<title>
FirstAccount Info
</title>
<script>
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>FirstAccount Info</b> <br><br>
</p>
<form name="frm" action="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff">FirstAccount :</td>
<td align='left' style="word-break: break-all;"><%=accNum %></td>
</tr>
</table>
<br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' bgcolor="#003366">&nbsp; <font color="yellow"><b>¼ø¹ø</b> &nbsp;</font></td>
<td align='left' bgcolor="#003366">&nbsp;<font color="yellow">&nbsp; <b>¸ñ·Ï</b></font></td>
</tr>
<%
for(int i=0; i<accNumArr.length; i++){
%>
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff">[ <%=i %> ] : &nbsp;&nbsp;</td>
<td align='left'><%=accNumArr[i] %></td>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>
+81
View File
@@ -0,0 +1,81 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.inflow.InflowControlManager"%>
<%@ page import="com.eactive.eai.common.inflow.InflowTargetVO"%>
<%
InflowControlManager manager = InflowControlManager.getInstance();
String[] names = manager.getAdapterAllKeys();
String selectedName = request.getParameter("name");
if(selectedName == null && names.length>0) selectedName = names[0];
InflowTargetVO vo = manager.getAdapterInflow(selectedName);
%>
<html>
<head>
<title>
Inflow Adapter Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>Infow Adapter Configuration</b> <br><br>
</p>
<form name="frm" action="">
<table width="450" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<%
if(selectedName!=null) {
%>
<tr bgcolor='white'>
<td align='right' width='200' bgcolor="#ccccff">어댑터명 : &nbsp;</td>
<td align='left' width='250'>&nbsp;<select name="name" onchange="doAction();">
<%
for(int i=0;i<names.length;i++) {
%>
<option value="<%=names[i]%>" <%=(names[i].equals(selectedName)) ? "selected" : ""%>><%=names[i]%>
<%
}
%></select>
</td>
</tr>
<%
if (vo != null){
%>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">선택된 어댑터명 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="text" size="20" value="<%=vo.getName()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">초당 임계치 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="text" size="20" value="<%=vo.getThresholdPerSecond()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">추가 임계치 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="text" size="20" value="<%=vo.getThreshold()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">추가 임계치 TimeUnit : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="text" size="20" value="<%=vo.getThresholdTimeUnit()%>"></td>
</tr>
<%
}
%>
<% } else { %>
<% } %>
</table>
<table border='0' width="800" >
<tr>
<td align='left'>
<!-- input type="submit" value="UPDATE"-->
</td>
</tr>
</table><br>
</form>
</body>
</html>
+81
View File
@@ -0,0 +1,81 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.inflow.InflowControlManager"%>
<%@ page import="com.eactive.eai.common.inflow.InflowTargetVO"%>
<%
InflowControlManager manager = InflowControlManager.getInstance();
String[] names = manager.getInterfaceAllKeys();
String selectedName = request.getParameter("name");
if(selectedName == null && names.length>0) selectedName = names[0];
InflowTargetVO vo = manager.getInterfaceInflow(selectedName);
%>
<html>
<head>
<title>
Inflow Interface Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>Infow Interface Configuration</b> <br><br>
</p>
<form name="frm" action="">
<table width="450" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<%
if(selectedName!=null) {
%>
<tr bgcolor='white'>
<td align='right' width='200' bgcolor="#ccccff">인터페이스명 : &nbsp;</td>
<td align='left' width='250'>&nbsp;<select name="name" onchange="doAction();">
<%
for(int i=0;i<names.length;i++) {
%>
<option value="<%=names[i]%>" <%=(names[i].equals(selectedName)) ? "selected" : ""%>><%=names[i]%>
<%
}
%></select>
</td>
</tr>
<%
if (vo != null){
%>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">선택된 인터페이스명 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="text" size="20" value="<%=vo.getName()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">초당 임계치 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="text" size="20" value="<%=vo.getThresholdPerSecond()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">추가 임계치 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="text" size="20" value="<%=vo.getThreshold()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">추가 임계치 TimeUnit : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="text" size="20" value="<%=vo.getThresholdTimeUnit()%>"></td>
</tr>
<%
}
%>
<% } else { %>
<% } %>
</table>
<table border='0' width="800" >
<tr>
<td align='left'>
<!-- input type="submit" value="UPDATE"-->
</td>
</tr>
</table><br>
</form>
</body>
</html>
+228
View File
@@ -0,0 +1,228 @@
<%-- <%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.agent.AgentUtil"%>
<%@ page import="com.eactive.eai.agent.command.Command"%>
<%@ page import="com.eactive.eai.common.EAITable"%>
<%@ page import="com.kbstar.eai.common.kbmessage.*"%>
<%@ page import="java.util.HashMap"%>
<%!
/**
* <pre>
* 문자열을 받아서 널이면 제로스트링을, 아니면 트림된 문자열을 리턴.
* </pre>
* @param String 변환 대상
* @return 'String'
*/
public static String checkNull( String str ) {
String sResult = new String();
if ( str == null ) {
sResult = "";
}
else {
sResult = str.trim();
}
return sResult;
}
%>
<%
KBMessageManager manager = KBMessageManager.getInstance();
String[] alls = manager.getAllKBMessageKeys();
String action = request.getParameter("actionType");
String selectedKey = request.getParameter("selectedKey");
if(selectedKey == null && alls.length>=1) {
selectedKey = alls[0];
}
if ("reload".equals(action)){
manager.reload(selectedKey);
}else if ("reloadAll".equals(action)){
manager.reload();
}else {
;
}
KBMessage vo = null;
if(selectedKey != null){
vo = manager.getKBMessage(selectedKey);
}
%>
<html>
<head>
<title>
EAI KBMessage Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function managerReload(){
document.frm.actionType.value="reload";
document.frm.submit();
}
function managerReloadAll(){
document.frm.actionType.value="reloadAll";
document.frm.submit();
}
function doSearch(){
var searchValue = document.frm.searchTxt.value;
document.frm.selectedKey.value = searchValue;
document.frm.submit();
}
function enterEvent(){
if(window.event.keyCode==13){
doSearch();
}
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>EAI KB내부표준 메시지 관리</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td rowspan="2" align='right' width='350' bgcolor="#ccccff">업무 서비스 키 :&nbsp;&nbsp;</td>
<td align='left' >&nbsp;<select name="selectedKey" onchange="doAction();"style="width:98%" >
<%
for(int i=0;i<alls.length;i++) {
%>
<option value="<%=alls[i]%>" <%= (alls[i].equals(selectedKey)) ? "selected" : "" %>><%=alls[i]%>
<%
}
%></select>
</td>
<td width='50'><input type="button" name="reload" value="reload" onClick="managerReload()" /></td>
<td width='70'><input type="button" name="reloadAll" value="reloadAll" onClick="managerReloadAll()" /></td>
</tr>
<tr bgcolor='white'>
<td align='left' >&nbsp;<input type="edit" name="searchTxt" onkeydown="enterEvent()" value="<%=selectedKey%>" style="width:98%" /></td>
<td colspan="2" align="center"><input type="button" name="search" value="search" onClick="doSearch()" /></td>
</tr>
</table>
</form>
<br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' bgcolor="#003366">&nbsp; <font color="yellow"><b>Property Key</b> &nbsp;</font></td>
<td align='left' bgcolor="#003366">&nbsp;<font color="yellow">&nbsp; <b>Property Value</b></font></td>
</tr>
<%
if(vo != null) {
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 업무 서비스 키 : &nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="bwkSvcKey" style="width:98%" value="<%=vo.getBwkSvcKey()%>" readonly></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; CICS트랜코드 : &nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="cICSTrncd" style="width:98%" value="<%=vo.getKBHeader().getCicsTrncd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 전문요청구분코드 : (S-요청 /R-응답)&nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="telgmDmndDstcd" style="width:98%" value="<%=vo.getKBHeader().getTelgmDmndDstcd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 그룹회사코드 : &nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="groupCoCd" style="width:98%" value="<%=vo.getKBCommon().getGroupCoCd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 수신거래코드 : &nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="telgmRecvTranCd" style="width:98%" value="<%=vo.getKBCommon().getTelgmRecvTranCd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 처리결과수신거래코드 : &nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="prcssRsultTelgmRecvTranCd" style="width:98%" value="<%=vo.getKBCommon().getPrcssRtdTranCd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 화면번호 : &nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="screnNo" style="width:98%" value="<%=vo.getKBCommon().getScrenNo()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 대외기관코드 : &nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="osidInstiCd" style="width:98%" value="<%=vo.getKBCommon().getOsidInstiCd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 내외부구분코드 : (1-내부/2-외부)&nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="wtinExtnlDstcd" style="width:98%" value="<%=vo.getKBCommon().getInoPartlDstcd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 원거래복원여부 : (0-불필요/1-필요)&nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="ogtranRstrYn" style="width:98%" value="<%=vo.getKBCommon().getOgtranRstrYn()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 복합거래요청구분코드 : (' '-없음/T-다중전송/A-다중조합)&nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="cmpxTranDmndDstcd" style="width:98%" value="<%=vo.getKBCommon().getCmpxTranDmndDstcd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 시스템운영환경구분코드 : (O-운영/S-테스트,스테이징/D-개발/R-DR)&nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="sysOperEvirnDstcd" style="width:98%" value="<%=vo.getKBCommon().getSysOperEvirnDstcd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 취소구분코드 : (1-정상/3-정정취소/4-정정/5-취소)&nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="cnclDstcd" style="width:98%" value="<%=vo.getKBCommon().getCnclDstcd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; EAI거래코드&nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="eAITranName" style="width:98%" value="<%=vo.getEAITranName()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; EAI내외부구분코드&nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="eaiInoPartlDstcd" style="width:98%" value="<%=vo.getKBCommon().getEaiInoPartlDstcd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 채널구분코드&nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="chnlDstcd" style="width:98%" value="<%=vo.getKBCommon().getChnlDstcd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 채널세부업무구분코드&nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="chnlDBzwkDstcd" style="width:98%" value="<%=vo.getKBCommon().getChnlDBzwkDstcd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 매체구분코드&nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="mdiaDstcd" style="width:98%" value="<%=vo.getKBCommon().getMdiaDstcd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 거래부점코드&nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="tranBrncd" style="width:98%" value="<%=vo.getKBCommon().getTranBrncd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 사용자 직원번호&nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="userEmpid" style="width:98%" value="<%=vo.getKBCommon().getUserEmpid()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 은행코드&nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="bnkCd" style="width:98%" value="<%=vo.getKBCommon().getBnkCd()%>"></td>
</tr>
<%
}
%>
</table>
</body>
</html> --%>
+68
View File
@@ -0,0 +1,68 @@
<%-- <%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.kbstar.eai.common.kbmessage.*,com.kbstar.eai.common.kbmessage.parser.*"%>
<%
String action = request.getParameter("Convert");
String kbmessagetext = "";
String fixeddata = "";
String xmldata = "";
String errorMsg = "";
if("Convert".equals(action)) {
try {
kbmessagetext = request.getParameter("kbmessagetext");
//KBMessage kbMsg = KBMessageUtil.convert(kbmessagetext.getBytes(), false);
KBMessageParser parser = KBMessageParserFactory.createPaserFactory(KBMessageParserType.ASC.toString());
KBMessage kbMsg = parser.convert(kbmessagetext.getBytes());
fixeddata = kbMsg.toString();
xmldata = kbMsg.toXMLString();
}
catch(Exception e) {
errorMsg = e.getMessage();
}
}
%>
<html>
<head>
<title>
KBMessage Util
</title>
<script>
function doAction() {
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>Message Parser</b> <br><br>
</p>
<form name="form" action="" method="post">
<table border='0' width="800" >
<tr>
<td align='left'>
<input type="submit" name="Convert" value="Convert">
</td>
</tr>
<% if(errorMsg != null && errorMsg.length() > 0) { %>
<tr>
<td align='left'><pre><%= errorMsg %></pre></td>
</tr>
<% } %>
</table>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='left' width='180' bgcolor="#ccccff">&nbsp;KBMessage 전문</td>
<td align='left'>&nbsp;<textarea name="kbmessagetext" cols="80" rows="10"><%= kbmessagetext %></textarea></td>
</tr>
<tr bgcolor='white'>
<td align='left' width='180' bgcolor="#ccccff">&nbsp;전문파싱</td>
<td align='left'>&nbsp;<textarea name="fixeddata" cols="80" rows="10"><%= fixeddata %></textarea></td>
</tr>
<tr bgcolor='white'>
<td align='left' width='180' bgcolor="#ccccff">&nbsp;XML 전문</td>
<td align='left'>&nbsp;<textarea name="xmldata" cols="80" rows="10"><%= xmldata %></textarea></td>
</tr>
</table>
</form>
</html> --%>
+138
View File
@@ -0,0 +1,138 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.EAITable"%>
<%@ page import="com.eactive.eai.common.lifecycle.Lifecycle"%>
<%@ page import="com.eactive.eai.common.lifecycle.LifecycleManager"%>
<%@ page import="com.eactive.eai.common.lifecycle.LifecycleVO"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="com.eactive.eai.common.util.* "%>
<%!
/**
* <pre>
* 문자열을 받아서 널이면 제로스트링을, 아니면 트림된 문자열을 리턴.
* </pre>
* @param String 변환 대상
* @return 'String'
*/
public static String checkNull( String str ) {
String sResult = new String();
if ( str == null ) {
sResult = "";
}
else {
sResult = str.trim();
}
return sResult;
}
%>
<%
LifecycleManager manager = ApplicationContextProvider.getContext().getBean(LifecycleManager.class);
String action = request.getParameter("actionType");
List lists = manager.getLifecycleVOList();
String[] alls = new String[lists.size()];
for(int i=0; i< alls.length; i++){
alls[i] = ((LifecycleVO)lists.get(i)).getLifecycleClass();
}
String selectedKey = request.getParameter("selectedKey");
if(selectedKey == null && alls.length>=1) {
selectedKey = alls[0];
}
LifecycleVO vo = null;
if(selectedKey!=null) {
for(int i=0; i < alls.length; i++){
String lifeC = ((LifecycleVO)lists.get(i)).getLifecycleClass();
if(selectedKey.equals(lifeC)){
vo = (LifecycleVO)lists.get(i);
}
}
}
%>
<html>
<head>
<title>
LifeCycle Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function doSearch(){
var searchValue = document.frm.searchTxt.value;
document.frm.selectedKey.value = searchValue;
document.frm.submit();
}
function enterEvent(){
if(window.event.keyCode==13){
doSearch();
}
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>라이프사이클 관리</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<input type="hidden" name="actionSeq" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td rowspan=2 align='right' width='350' bgcolor="#ccccff">라이프사이클 클래스명 :&nbsp;&nbsp;</td>
<td align='left'><select name="selectedKey" onchange="doAction();"style="width:98%">
<%
for(int i=0;i<alls.length;i++) {
%>
<option value="<%=alls[i]%>" <%= (alls[i].equals(selectedKey)) ? "selected" : "" %>><%=alls[i]%>
<%
}
%></select>
</td>
<td rowspan="2" align="center" ><input type="button" name="search" value="search" onClick="doSearch()" /></td>
</tr>
<tr bgcolor='white'>
<td align='left' ><input type="edit" style="width:100%" name="searchTxt" onkeydown="enterEvent()" value="<%=selectedKey%>" style="width:98%" /></td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan='2' width='350' bgcolor="#003366">&nbsp; <font color="yellow"><b>내용</b> &nbsp;</font></td>
</tr>
<%
if(vo != null ){
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 라이프사이클 클래스명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="LifecycleClass" style="width:98%" value="<%=vo.getLifecycleClass()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 로딩순서 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="LOADSEQUENCE" style="width:98%" value="<%=vo.getLoadSequence()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 라이프사이클 구분코드 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=vo.getLifeCyclUseDstcd()%>"></td>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>
+185
View File
@@ -0,0 +1,185 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.EAITable"%>
<%@ page import="com.eactive.eai.common.messagekey.*"%>
<%
MessageKeyManager manager = MessageKeyManager.getInstance();
String[] alls = manager.getAllKeyNames();
String action = request.getParameter("actionType");
String selectedKey = request.getParameter("selectedKey");
if(selectedKey == null && alls.length>1) {
selectedKey = alls[0];
}
if ("reload".equals(action)){
//I를 "," 로 분리 해야됨
manager.reload(selectedKey.substring(0,selectedKey.length()-1),selectedKey.substring(selectedKey.length()-1) );
}else if ("reloadAll".equals(action)){
manager.reload();
}else {
;
}
MessageKeyVO vo = null;
if(selectedKey != null){
vo = manager.getMessageKey(selectedKey);
}
String voName = (String)vo.getName();
String adptName = voName.substring(0, voName.length()-1);
String exrTp = voName.substring(voName.length()-1);
%>
<html>
<head>
<title>
MessageKey Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function managerReload(){
document.frm.actionType.value="reload";
document.frm.submit();
}
function managerReloadAll(){
document.frm.actionType.value="reloadAll";
document.frm.submit();
}
function doSearch(){
var searchValue = document.frm.adptName.value+document.frm.exrTp.value;
document.frm.selectedKey.value = searchValue;
document.frm.submit();
}
function enterEvent(){
if(window.event.keyCode==13){
doSearch();
}
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>메세지키 관리</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">어댑터명 + 기능구분 :&nbsp;&nbsp;</td>
<td align='left'>&nbsp;<select name="selectedKey" onchange="doAction();" style="width:98%;" >
<%
for(int i=0;i<alls.length;i++) {
%>
<option value="<%=alls[i]%>" <%= (alls[i].equals(selectedKey)) ? "selected" : "" %>><%=alls[i]%>
<%
}
%></select>
</td>
<td width='50'><input type="button" name="reload" value="reload" onClick="managerReload()" /></td>
<td width='70'><input type="button" name="reloadAll" value="reloadAll" onClick="managerReloadAll()" /></td>
</tr>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">어댑터명 : &nbsp;&nbsp;</td>
<td align='left' >&nbsp;<input type="edit" name="adptName" onkeydown="enterEvent()" value="<%=adptName%>" style="width:98%;" /></td>
<td colspan=2 rowspan=2 align='center'><input type="button" name="search" value="search" onClick="doSearch()" /></td>
</tr>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">기능구분 : &nbsp;&nbsp;</td>
<td align='left' >&nbsp;<input type="edit" name="exrTp" onkeydown="enterEvent()" value="<%=exrTp%>"style="width:98%;"/></td>
</tr>
</table>
<br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan=2 bgcolor="#003366">&nbsp; <font color="yellow"><b>내용</b> &nbsp;</font></td>
</tr>
<%
if(vo != null) {
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 어댑터명 : &nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="AdptIoBwkNm" style="width:98%" value="<%=adptName%>" readonly></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 메시지유형 : &nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;
<select name="MsgTp">
<%
int msgTypeLength = EAITable.MSG_TYPES.length;
for(int i=0; i<msgTypeLength; i++) {
%>
<option value="<%=EAITable.MSG_TYPES[i]%>" <%= (EAITable.MSG_TYPES[i].equals(vo.getMsgTp())) ? "selected" : "" %>><%=EAITable.MSG_TYPE_NAMES[i]%>
<%
}
%>
</select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 기능구분 : &nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<select name="ExrTp">
<%
int exrTypeLength = EAITable.EXR_TYPES.length;
for(int i=0; i<exrTypeLength; i++) {
%>
<option value="<%=EAITable.EXR_TYPES[i]%>" <%= (EAITable.EXR_TYPES[i].equals(vo.getExrTp())) ? "selected" : "" %>><%=EAITable.EXR_TYPE_NAMES[i]%>
<%
}
%>
</select>
</tr>
<%
int groupSize = vo.getAlMsgGroups().size();
for(int g=0; g<groupSize; g++ ) {
%>
<tr bgcolor='white'>
<td align='right' height="5" bgcolor="#003366" colspan="2">&nbsp;<font color="yellow"><b>Group[<%= g %>]</b> &nbsp;</font></td>
</tr>
<%
MessageKeyGroupVO group = vo.getMessageKeyGroup(g);
int fldSize = group.getMessageKeyFldLength();
for(int i=0; i<fldSize; i++) {
%>
<tr bgcolor='white'>
<td align='right' height="5" bgcolor="#003366" colspan="2">&nbsp;<font color="yellow"><b>Field[<%= i %>]</b> &nbsp;</font></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 업무필드명 : &nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="BwkColNm" style="width:98%" value="<%=group.getMessageKeyFld(i).getBwkColNm()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 클래스명 : &nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="BwkClassNm" style="width:98%" value="<%=group.getMessageKeyFld(i).getBwkClassNm()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 필드시작위치 : &nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="BwkColStart" style="width:98%" value="<%=group.getMessageKeyFld(i).getBwkColStart()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 필드길이 : &nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="BwkColLength" style="width:98%" value="<%=group.getMessageKeyFld(i).getBwkColLength()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 정상값 : &nbsp;&nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="BwkColDef" style="width:98%" value="<%=group.getMessageKeyFld(i).getBwkColDef()%>"></td>
</tr>
<%
}
}
}
%>
</table>
</form>
</body>
</html>
+304
View File
@@ -0,0 +1,304 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.EAITable"%>
<%@ page import="com.eactive.eai.common.message.EAIMessage"%>
<%@ page import="com.eactive.eai.common.message.ServiceMessage"%>
<%@ page import="com.eactive.eai.common.message.EAIMessageManager"%>
<%@ page import="com.eactive.eai.common.monitor.EAIServiceMonitor"%>
<%@ page import="com.eactive.eai.common.monitor.MonitorVO"%>
<%@ page import="java.util.HashMap"%>
<%
EAIServiceMonitor monitor = EAIServiceMonitor.getInstance();
String[] voKey = monitor.getAllMonitorVOKey();
String action = request.getParameter("actionType");
MonitorVO vo = null;
String[] pssCntKey = null;
String[] pssErrCntKey = null;
HashMap pssCnt = null;
HashMap pssCntInPeriod = null;
HashMap errPssCnt = null;
HashMap errPssCntInPeriod = null;
String selectedSvcCds = request.getParameter("svcCds");
if(selectedSvcCds == null && voKey.length>=1){
selectedSvcCds = voKey[0];
}
if(selectedSvcCds!=null) {
vo = monitor.getMonitorVO(selectedSvcCds);
if("RESET".equals(action)) {
vo.reset();
}
pssCntKey = vo.getAllPssCntKey();
pssCnt = vo.getPssCnt();
pssCntInPeriod = vo.getPssCntInPeriod();
errPssCnt = vo.getErrPssCnt();
errPssCntInPeriod = vo.getErrPssCntInPeriod();
pssErrCntKey = vo.getAllErrPssCntKey();
}
if("ALLRESET".equalsIgnoreCase(action)){
monitor.resetAll();
}
%>
<html>
<head>
<title>
Service ID/Log Sequence 별 통계 Monitor
</title>
<script>
function doAction() {
document.frm.submit();
}
function doReset() {
document.frm.actionType.value="RESET";
document.frm.submit();
}
function doAllReset() {
document.frm.actionType.value="ALLRESET";
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>Service ID/Log Sequence 별 통계 데이터</b> <br><br>
</p>
<form name="frm" method="POST" action="">
<input type="hidden" name="actionType" value="">
<table border='0' width="800" >
<tr>
<td align='left'>
<table width="450" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff"><label value="EAI Service Message ID : "/>&nbsp;</td>
<td align='left'>&nbsp;<select name="svcCds" onchange="doAction();">
<%
for(int i=0;i<voKey.length;i++) {
%>
<option value="<%=voKey[i]%>" <%= (voKey[i].equals(selectedSvcCds)) ? "selected" : "" %>><%=voKey[i]%>
<%
}
%></select>
</td>
</tr>
</table>
</td>
<td align='right'>
<input type="button" value="RESET" onclick="doReset()">
</td>
<td align='right'>
<input type="button" value="ALL RESET" onclick="doAllReset()">
</td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<%
if(pssCntKey != null && pssCntKey.length >0){
if(vo != null) {
%>
<tr bgcolor='white'>
<td align='center' bgcolor="#003366" colspan="7">&nbsp;<font color="yellow">&nbsp; <b>일일 통계</b></font></td>
</tr>
<tr bgcolor='white'>
<td align='right' width="200" bgcolor="#6699cc" rowspan ="2">구분</td>
<td align='center' bgcolor="#6699cc" colspan="5">Log Sequence 별 처리 누적 </td>
<td align='center' bgcolor="#6699cc" rowspan ="2">EAI 시스템 평균 처리시간(초) </td>
<td align='center' bgcolor="#6699cc" rowspan ="2">수동 시스템 평균 처리시간(초) </td>
</tr>
<tr bgcolor='white'>
<%
int pssCntKeyLength = pssCntKey.length;
int pssErrCntKeyLength = pssErrCntKey.length;
long[] verTotal = new long[pssErrCntKeyLength];
long[] verInPeriodTotal = new long[pssErrCntKeyLength];
for(int i=0;i<pssErrCntKeyLength;i++) {
%>
<td align='center' width='40' bgcolor="#ccccff"><%=pssErrCntKey[i]%></td>
<%
}
%>
</tr>
<tr bgcolor='white'>
<td align='right' width="200" bgcolor="#6699cc" >&nbsp; 처리 건수 : &nbsp;</td>
<%
for(int i=0;i<pssCntKeyLength;i++) {
verTotal[i] = verTotal[i]+Long.parseLong(pssCnt.get(pssCntKey[i]).toString());
%>
<td align='right'>&nbsp;<input align='right' type="text" name="recvCount" size='10'value="<%=pssCnt.get(pssCntKey[i])%>"> </td>
<%
}
double avgOfprocessTime = 0;
double psvAvgOfProcessTime = 0;
if("AA".equalsIgnoreCase(vo.getIfType())){
if(Long.parseLong(pssCnt.get(pssCntKey[1]).toString()) >0 && vo.getSumOfprocessTime() > 0 ){
avgOfprocessTime = vo.getSumOfprocessTime()/1000/Long.parseLong(pssCnt.get(pssCntKey[1]).toString());
}
if(Long.parseLong(pssCnt.get(pssCntKey[3]).toString()) >0 && vo.getSumOfprocessTime() > 0 ){
avgOfprocessTime = vo.getSumOfprocessTime()/1000/Long.parseLong(pssCnt.get(pssCntKey[3]).toString());
}
}
else{
if(Long.parseLong(pssCnt.get(pssCntKey[3]).toString()) >0 && vo.getSumOfprocessTime() > 0 ){
avgOfprocessTime = vo.getSumOfprocessTime()/1000/Long.parseLong(pssCnt.get(pssCntKey[3]).toString());
}
}
if(Long.parseLong(pssCnt.get(pssCntKey[2]).toString()) > 0 && vo.getPsvSumOfPssTime() > 0 ){
psvAvgOfProcessTime = vo.getPsvSumOfPssTime()/1000/Long.parseLong(pssCnt.get(pssCntKey[2]).toString());
}
%>
<td align='right'>&nbsp;<input align='right' type="text" name="recvCount2" size='10'value="0">
<td align='right' rowspan="3">&nbsp;<input align='right' type="text" name="avgOfprocessTime" size='10'value="<%=avgOfprocessTime%>"> </td>
<td align='right' rowspan="3">&nbsp;<input align='right' type="text" name="psvAvgOfProcessTime" size='10'value="<%=psvAvgOfProcessTime%>"> </td>
</tr>
<tr bgcolor='white'>
<td align='right' width="200" bgcolor="#6699cc" >&nbsp; 에러 발생 건수</td>
<%
for(int i=0;i<pssErrCntKeyLength;i++) {
verTotal[i] = verTotal[i] + Long.parseLong(errPssCnt.get(pssErrCntKey[i]).toString());
%>
<td align='right'>&nbsp;<input align='right' type="text" name="errorCount" size='10'value="<%=errPssCnt.get(pssErrCntKey[i])%>"> </td>
<%
}
%>
</tr>
<tr bgcolor='white'>
<td align='right' width="200" bgcolor="#6699cc"> &nbsp; Log Sequence 별 합계 : &nbsp; </td>
<%
for(int i=0;i<pssErrCntKeyLength;i++) {
%>
<td align='right' ><input align='right' type="text" name="sumOfLogSeqInPeriod" size='10'value="<%=verTotal[i]%>"> </td>
<%
}
%>
</tr>
<!--- 최근시간 --->
<tr bgcolor='white'>
<td align='center' bgcolor="#003366" colspan="7">&nbsp;<font color="yellow">&nbsp; <b>최근시간 통계</b></font></td>
</tr>
<tr bgcolor='white'>
<td align='right' width="200" bgcolor="#6699cc" rowspan ="2">구분</td>
<td align='center' bgcolor="#6699cc" colspan="5">Log Sequence 별 처리 누적 </td>
<td align='center' bgcolor="#6699cc" rowspan ="2">EAI 시스템 평균 처리시간(초) </td>
<td align='center' bgcolor="#6699cc" rowspan ="2">수동 시스템 평균 처리시간(초) </td>
</tr>
<tr bgcolor='white'>
<%
for(int i=0;i<pssErrCntKeyLength;i++) {
%>
<td align='center' width='40' bgcolor="#ccccff"><%=pssErrCntKey[i]%></td>
<%
}
%>
</tr>
<tr bgcolor='white'>
<td align='right' width="200" bgcolor="#6699cc" > 처리 건수 : &nbsp;</td>
<%
for(int i=0;i<pssCntKeyLength;i++) {
verInPeriodTotal[i] = verInPeriodTotal[i]+Long.parseLong(pssCntInPeriod.get(pssCntKey[i]).toString());
%>
<td align='right'>&nbsp;<input align='right' type="text" name="recvCountInPeriod" size='10'value="<%=pssCntInPeriod.get(pssCntKey[i])%>"> </td>
<%
}
double avgOfprocessTimeInPeriod = 0;
double psvAvgOfProcessTimeInPeriod = 0;
if("AA".equalsIgnoreCase(vo.getIfType())){
if(Long.parseLong(pssCntInPeriod.get(pssCntKey[1]).toString()) >0 && vo.getSumOfProcessTimeInPeriod() > 0){
avgOfprocessTimeInPeriod = vo.getSumOfProcessTimeInPeriod()/1000/Long.parseLong(pssCntInPeriod.get(pssCntKey[1]).toString());
}
if(Long.parseLong(pssCntInPeriod.get(pssCntKey[3]).toString()) >0 && vo.getSumOfProcessTimeInPeriod() > 0){
avgOfprocessTimeInPeriod = vo.getSumOfProcessTimeInPeriod()/1000/Long.parseLong(pssCntInPeriod.get(pssCntKey[3]).toString());
}
}
else{
if(Long.parseLong(pssCntInPeriod.get(pssCntKey[3]).toString()) >0 && vo.getSumOfProcessTimeInPeriod() > 0){
avgOfprocessTimeInPeriod = vo.getSumOfProcessTimeInPeriod()/1000/Long.parseLong(pssCntInPeriod.get(pssCntKey[3]).toString());
}
}
if(Long.parseLong(pssCntInPeriod.get(pssCntKey[2]).toString()) >0 && vo.getPsvSumOfPssTimeInPeriod() > 0){
psvAvgOfProcessTimeInPeriod = vo.getPsvSumOfPssTimeInPeriod()/1000/Long.parseLong(pssCntInPeriod.get(pssCntKey[2]).toString());
}
%>
<td align='right'>&nbsp;<input align='right' type="text" name="recvCountInPeriod" size='10'value="0">
<td align='right' rowspan="3">&nbsp;<input align='right' type="text" name="avgOfprocessTimeInPeriod" size='10'value="<%=avgOfprocessTimeInPeriod%>"> </td>
<td align='right' rowspan="3">&nbsp;<input align='right' type="text" name="psvAvgOfProcessTimeInPeriod" size='10'value="<%=psvAvgOfProcessTimeInPeriod%>"> </td>
</tr>
<tr bgcolor='white'>
<td align='right' width="200" bgcolor="#6699cc" >&nbsp; 에러 발생 건수</td>
<%
for(int i=0;i<pssErrCntKeyLength;i++) {
verInPeriodTotal[i] = verInPeriodTotal[i] + Long.parseLong(errPssCntInPeriod.get(pssErrCntKey[i]).toString());
%>
<td align='right'>&nbsp;<input align='right' type="text" name="sendCount" size='10'value="<%=errPssCntInPeriod.get(pssErrCntKey[i])%>"> </td>
<%
}
%>
</tr>
<tr bgcolor='white'>
<td align='right' width="200" bgcolor="#6699cc"> &nbsp; Log Sequence 별 합계 : &nbsp; </td>
<%
for(int i=0;i<pssErrCntKeyLength;i++) {
%>
<td align='right' ><input align='right' type="text" name="sumOfLogSeqInPeriod" size='10'value="<%=verInPeriodTotal[i]%>"> </td>
<%
}
%>
</tr>
<%
}
}else{
%>
</table>
해당 서비스 ID에 대한 거래 내역이 없습니다.
<%
}
%>
</form>
</body>
</html>
+109
View File
@@ -0,0 +1,109 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.property.PropGroupVO"%>
<%@ page import="com.eactive.eai.common.property.PropManager"%>
<%
PropManager manager = PropManager.getInstance();
String[] alls = manager.getAllPropGroupNames();
String action = request.getParameter("actionType");
String selectedKey = request.getParameter("selectedKey");
if(selectedKey == null && alls.length>1) {
selectedKey = alls[0];
}
if ("reload".equals(action)){
manager.reload(selectedKey);
}else if ("reloadAll".equals(action)){
manager.reload();
}else {
;
}
PropGroupVO vo = null;
String[] keys = null;
if(selectedKey!=null) {
vo = manager.getPropGroupVO(selectedKey);
keys = vo.keys();
}
%>
<html>
<head>
<title>
Property Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function managerReload(){
document.frm.actionType.value="reload";
document.frm.submit();
}
function managerReloadAll(){
document.frm.actionType.value="reloadAll";
document.frm.submit();
}
function doSearch(){
var searchValue = document.frm.searchTxt.value;
document.frm.selectedKey.value = searchValue;
document.frm.submit();
}
function enterEvent(){
if(window.event.keyCode==13){
doSearch();
}
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>프라퍼티 관리</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td rowspan=2 align='right' width='350' bgcolor="#ccccff">프라퍼티 그룹 :&nbsp;&nbsp;</td>
<td align='left'>&nbsp;<select name="selectedKey" onchange="doAction();"style="width:98%;">
<%
for(int i=0;i<alls.length;i++) {
%>
<option value="<%=alls[i]%>" <%= (alls[i].equals(selectedKey)) ? "selected" : "" %>><%=alls[i]%>
<%
}
%></select>
</td>
<td width='50'><input type="button" name="reload" value="reload" onClick="managerReload()" /></td>
<td width='70'><input type="button" name="reloadAll" value="reloadAll" onClick="managerReloadAll()" /></td>
</tr>
<tr bgcolor='white'>
<td align='left' >&nbsp;<input type="edit" style="width:98%;" name="searchTxt" onkeydown="enterEvent()" value="<%=selectedKey%>" /></td>
<td colspan=2 align="center"><input type="button" name="search" value="search" onClick="doSearch()" /></td>
</tr>
</table>
<br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' bgcolor="#003366">&nbsp; <font color="yellow"><b>Property Key</b> &nbsp;</font></td>
<td align='left' bgcolor="#003366">&nbsp;<font color="yellow">&nbsp; <b>Property Value</b></font></td>
</tr>
<%
if(vo!=null) {
for (int i=0; i<keys.length; i++){
%>
<tr bgcolor='white'>
<td align='right' width='360' bgcolor="#ccccff">&nbsp; <%=keys[i]%> : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="<%=keys[i]%>" style="width:98%" value="<%=vo.getProperty(keys[i])%>"></td>
</tr>
<%
}
}
%>
</table>
</form>
</body>
</html>
+144
View File
@@ -0,0 +1,144 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.EAITable"%>
<%@ page import="com.eactive.eai.common.message.EAIMessage"%>
<%@ page import="com.eactive.eai.common.message.ServiceMessage"%>
<%@ page import="com.eactive.eai.common.message.EAIMessageManager"%>
<%@ page import="java.util.HashMap"%>
<%!
/**
* <pre>
* 문자열을 받아서 널이면 제로스트링을, 아니면 트림된 문자열을 리턴.
* </pre>
* @param String 변환 대상
* @return 'String'
*/
public static String checkNull( String str ) {
String sResult = new String();
if ( str == null ) {
sResult = "";
}
else {
sResult = str.trim();
}
return sResult;
}
%>
<%
String action = request.getParameter("actionType");
String seq = request.getParameter("actionSeq");
String eAISvcCd = checkNull(request.getParameter("id"));
EAIMessageManager manager = EAIMessageManager.getInstance();
String[] eaiSvcCds = manager.getAllEAISvcCd();
String selectedSvcCds = request.getParameter("svcCds");
if(selectedSvcCds == null && eaiSvcCds.length>=1) {
selectedSvcCds = eaiSvcCds[0];
}
if(eAISvcCd.length() > 0)
selectedSvcCds = eAISvcCd;
EAIMessage eAIMsg = new EAIMessage();
List<ServiceMessage> svcMsg = new ArrayList();
if(selectedSvcCds!=null) {
System.out.println("selectedSvcCds : "+ selectedSvcCds);
eAIMsg = manager.getEAIMessage(selectedSvcCds);
svcMsg = eAIMsg.getSvcMsgs();
}
%>
<html>
<head>
<title>
EAI RefMessageIds Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>EAI RefMessageIDs Configuration</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<input type="hidden" name="actionSeq" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<!--
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff"><label value="EAI Service Message ID : "/>&nbsp;</td>
<td align='left'>&nbsp;<select name="svcCds" onchange="doAction();">
<%
for(int i=0;i<eaiSvcCds.length;i++) {
%>
<option value="<%=eaiSvcCds[i]%>" <%= (eaiSvcCds[i].equals(selectedSvcCds)) ? "selected" : "" %>><%=eaiSvcCds[i]%>
<%
}
%></select>
</td>
</tr>
-->
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">EAI 서비스코드</td>
<td align='left'>&nbsp;&nbsp;<input type="text" name="selectedKey" value="<%=selectedSvcCds%>" />
</td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan='2' width='350' bgcolor="#003366">&nbsp; <font color="yellow"><b>내용</b> &nbsp;</font></td>
</tr>
<%
if(svcMsg != null) {
int size = svcMsg.size();
for(int i=0; i<size; i++) {
ServiceMessage sm = (ServiceMessage)svcMsg.get(i);
String[] refmsgid = sm.getRefMsgIDs();
%>
<tr bgcolor='white'>
<td align='right' colspan="2">
</td>
</tr>
<tr bgcolor='white'>
<td align='right' colspan='2' width="350" height="5" bgcolor="#003366" colspan="2">&nbsp;<font color="yellow"><b>SvcPssSeq[<%= i+1 %>]</b> &nbsp;</font></td>
</tr>
<%
if(refmsgid != null && refmsgid.length >0){
for(int j=0; j<refmsgid.length; j++){
int idseq = j+1;
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; RefMsgIDSeq : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="refMsgIDSeq" size='60' value="<%=idseq%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; RefMsgID : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="refMsgIDSeq" size='60' value="<%=refmsgid[j]%>"></td>
</tr>
<%
}
}
}
}
%>
</table>
</form>
</body>
</html>
+89
View File
@@ -0,0 +1,89 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.restrict.*"%>
<%
RestrictInfoManager manager = RestrictInfoManager.getInstance();
String action = request.getParameter("actionType");
if("RELOAD".equals(action)) {
System.out.println("restrictInfo.jap - RELOAD called");
manager.reload();
}
String[] names = manager.getAllCodes();
Map<String, RestrictInfoVO> messages = manager.getAllRestrictInfos();
String selectedName = request.getParameter("code");
if(selectedName == null && names.length>1) selectedName = names[0];
%>
<html>
<head>
<title>
RestrictInfoManager
</title>
<script>
function doAction() {
document.frm.submit();
}
function doReload() {
document.frm.actionType.value="RELOAD";
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>RestrictInfo</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table width="600" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<% if(selectedName!=null) { %>
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff"><label value="Code : "/>&nbsp;</td>
<td align='left'>&nbsp;<select name="code" onchange="doAction();">
<%
for(int i=0;i<names.length;i++) {
%>
<option value="<%=names[i]%>" <%= (names[i].equals(selectedName)) ? "selected" : "" %>><%=names[i]%>
<%
}
%></select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='200' bgcolor="#ccccff"><label value="EAI통제명 : "/>&nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="text" size="40" value="<%=((RestrictInfoVO)messages.get(selectedName)).getEAICtrlName()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='200' bgcolor="#ccccff"><label value="EAI통제명구분코드 : "/>&nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="text" size="40" value="<%=((RestrictInfoVO)messages.get(selectedName)).getEAICtrlNameDstcd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='200' bgcolor="#ccccff"><label value="EAI통제구분내용 : "/>&nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="text" size="40" value="<%=((RestrictInfoVO)messages.get(selectedName)).getEAICtrlDsticCtnt()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='200' bgcolor="#ccccff"><label value="통제처리일시 : "/>&nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="text" size="40" value="<%=((RestrictInfoVO)messages.get(selectedName)).getCtrlPrcssYMS()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='200' bgcolor="#ccccff"><label value="거래제어처리명 : "/>&nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="text" size="40" value="<%=((RestrictInfoVO)messages.get(selectedName)).getTranCtrlPrcssName()%>"></td>
</tr>
<% } else { %>
<% } %>
</table>
<table border='0' width="800" >
<tr>
<td align='left'>
<input type="button" value="RELOAD" onclick="doReload()">
</td>
</tr>
</table><br>
</form>
</body>
</html>
+120
View File
@@ -0,0 +1,120 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.routing.RoutingManager"%>
<%@ page import="com.eactive.eai.common.routing.RoutingVO"%>
<%
RoutingManager manager = RoutingManager.getInstance();
String[] alls = manager.getAllRoutingNames();
String action = request.getParameter("actionType");
String selectedKey = request.getParameter("selectedKey");
if(selectedKey == null && alls.length>=1) {
selectedKey = alls[0];
}
if ("reload".equals(action)){
manager.reload(selectedKey);
}else if ("reloadAll".equals(action)){
manager.reload();
}else {
;
}
RoutingVO vo = null;
if(selectedKey != null){
vo = manager.getRoutingVO(selectedKey);
}
%>
<html>
<head>
<title>
Routing Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function managerReload(){
document.frm.actionType.value="reload";
document.frm.submit();
}
function managerReloadAll(){
document.frm.actionType.value="reloadAll";
document.frm.submit();
}
function doSearch(){
var searchValue = document.frm.searchTxt.value;
document.frm.selectedKey.value = searchValue;
document.frm.submit();
}
function enterEvent(){
if(window.event.keyCode==13){
doSearch();
}
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>라우팅 관리</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td rowspan=2 align='right' width='350' bgcolor="#ccccff">라우팅명 :&nbsp;&nbsp;</td>
<td align='left'>&nbsp;<select name="selectedKey" onchange="doAction();" style="width:98%">
<%
for(int i=0;i<alls.length;i++) {
%>
<option value="<%=alls[i]%>" <%= (alls[i].equals(selectedKey)) ? "selected" : "" %>><%=alls[i]%>
<%
}
%></select>
</td>
<td width='50'><input type="button" name="reload" value="reload" onClick="managerReload()" /></td>
<td width='70'><input type="button" name="reloadAll" value="reloadAll" onClick="managerReloadAll()" /></td>
</tr>
<tr bgcolor='white'>
<td align='left' >&nbsp;<input type="edit" style="width:98%;" name="searchTxt" onkeydown="enterEvent()" value="<%=selectedKey%>" style="width:98%" /></td>
<td colspan=2 align="center"><input type="button" name="search" value="search" onClick="doSearch()" /></td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan=2 bgcolor="#003366">&nbsp; <font color="yellow"><b>내용</b> &nbsp;</font></td>
</tr>
<%
if(vo != null) {
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 라우팅명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="name" style="width:98%" value="<%=vo.getName()%>" readonly></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 동기 라우팅 URI : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="syncRoutingPath" style="width:98%" value="<%=vo.getSyncRoutingPath()%>" ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 비동기 라우팅 URI : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="asynRoutingPath" style="width:98%" value="<%=vo.getAsynRoutingPath()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이어구분코드 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="asynRoutingPath" style="width:98%" value="<%=vo.getLayerDstcd()%>"></td>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>
+129
View File
@@ -0,0 +1,129 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.agent.AgentUtil"%>
<%@ page import="com.eactive.eai.agent.command.Command"%>
<%@ page import="com.eactive.eai.common.EAITable"%>
<%@ page import="com.eactive.eai.common.stdmessage.*"%>
<%@ page import="com.eactive.eai.common.server.EAIServerManager"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="com.eactive.eai.message.StandardMessage"%>
<%!
/**
* <pre>
* 문자열을 받아서 널이면 제로스트링을, 아니면 트림된 문자열을 리턴.
* </pre>
* @param String 변환 대상
* @return 'String'
*/
public static String checkNull( String str ) {
String sResult = new String();
if ( str == null ) {
sResult = "";
}
else {
sResult = str.trim();
}
return sResult;
}
%>
<%
STDMessageManager manager = STDMessageManager.getInstance();
String[] alls = manager.getAllSTDMessageKeys();
String action = request.getParameter("actionType");
String selectedKey = request.getParameter("selectedKey");
if(selectedKey == null && alls.length>=1) {
selectedKey = alls[0];
}
if ("reload".equals(action)){
manager.reload(selectedKey);
}else if ("reloadAll".equals(action)){
manager.reload();
}else {
;
}
StandardMessage vo = null;
if(selectedKey != null) {
vo = manager.getSTDMessage(selectedKey);
}
%>
<html>
<head>
<title>
EAI STDMessage Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function managerReload(){
document.frm.actionType.value="reload";
document.frm.submit();
}
function managerReloadAll(){
document.frm.actionType.value="reloadAll";
document.frm.submit();
}
function doSearch(){
var searchValue = document.frm.searchTxt.value;
document.frm.selectedKey.value = searchValue;
document.frm.submit();
}
function enterEvent(){
if(window.event.keyCode==13){
doSearch();
}
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>EAI 내부표준 메시지 관리</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td rowspan="2" align='right' width='350' bgcolor="#ccccff">업무 서비스 키 :&nbsp;&nbsp;</td>
<td align='left' >&nbsp;<select name="selectedKey" onchange="doAction();"style="width:98%" >
<%
for(int i=0;i<alls.length;i++) {
%>
<option value="<%=alls[i]%>" <%= (alls[i].equals(selectedKey)) ? "selected" : "" %>><%=alls[i]%>
<%
}
%></select>
</td>
<td width='50'><input type="button" name="reload" value="reload" onClick="managerReload()" /></td>
<td width='70'><input type="button" name="reloadAll" value="reloadAll" onClick="managerReloadAll()" /></td>
</tr>
<tr bgcolor='white'>
<td align='left' >&nbsp;<input type="edit" name="searchTxt" onkeydown="enterEvent()" value="<%=selectedKey%>" style="width:98%" /></td>
<td colspan="2" align="center"><input type="button" name="search" value="search" onClick="doSearch()" /></td>
</tr>
</table>
</form>
<br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' bgcolor="#003366">&nbsp; <font color="yellow"><b>Property Key</b> &nbsp;</font></td>
<td align='left' bgcolor="#003366">&nbsp;<font color="yellow">&nbsp; <b>Property Value</b></font></td>
</tr>
<%
if(vo != null) {
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; XML : &nbsp;&nbsp;</td>
<td align='left' style="height:40px;"><%=vo.toPrettyJson(false)%></td>
</tr>
<%
}
%>
</table>
</body>
</html>
+354
View File
@@ -0,0 +1,354 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.EAITable"%>
<%@ page import="com.eactive.eai.common.message.EAIMessage"%>
<%@ page import="com.eactive.eai.common.message.ServiceMessage"%>
<%@ page import="com.eactive.eai.common.message.EAIMessageManager"%>
<%@ page import="java.util.HashMap"%>
<%!
/**
* <pre>
* 문자열을 받아서 널이면 제로스트링을, 아니면 트림된 문자열을 리턴.
* </pre>
* @param String 변환 대상
* @return 'String'
*/
public static String checkNull( String str ) {
String sResult = new String();
if ( str == null ) {
sResult = "";
}
else {
sResult = str.trim();
}
return sResult;
}
%>
<%
EAIMessageManager manager = EAIMessageManager.getInstance();
String[] alls = manager.getAllEAISvcCd();
String action = request.getParameter("actionType");
String eaiSvcCd = checkNull(request.getParameter("id"));
String selectedKey = request.getParameter("selectedKey");
if(selectedKey == null && alls.length>=1) {
selectedKey = alls[0];
}
if(eaiSvcCd.length() > 0){
selectedKey = eaiSvcCd;
}
List<ServiceMessage> listVo = null;
if(selectedKey!=null) {
listVo = manager.getEAIMessage(selectedKey).getSvcMsgs();
}
%>
<html>
<head>
<title>
EAI ServiceMessage Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function openRefMsgID(id){
var url = 'refmsgid.jsp?svcCds='+id;
msgWindow=window.open(url);
}
function openCondPerRtgInfo(id, seq){
var url = '_condperrtginfo.jsp?id='+id+'seq'+seq;
msgWindow=window.open(url);
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>EAI ServiceMessage Configuration</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<input type="hidden" name="actionSeq" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<!--
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff">EAI서비스코드</td>
<td align='left'>&nbsp;<select name="selectedKey" onchange="doAction();">
<%
for(int i=0;i<alls.length;i++) {
%>
<option value="<%=alls[i]%>" <%= (alls[i].equals(selectedKey)) ? "selected" : "" %>><%=alls[i]%>
<%
}
%></select>
</td>
</tr>
-->
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">EAI서비스코드</td>
<td align='left'>&nbsp;<input type="text" name="selectedKey" value="<%=selectedKey%>" style="width:98%"/>
</td>
</tr>
</table>
</td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan=2 bgcolor="#003366">&nbsp; <font color="yellow"><b>내용</b> &nbsp;</font></td>
</tr>
<%
if(listVo != null) {
int size = listVo.size();
for(int i=0; i<size; i++) {
ServiceMessage sm = (ServiceMessage)listVo.get(i);
%>
<tr bgcolor='white'>
<td align='right' width="350" height="5" bgcolor="#003366" colspan="2">&nbsp;<font color="yellow"><b>Field[<%= i %>]</b> &nbsp;</font></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp;서비스처리순서 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="svcPssSeq" style="width:98%" value="<%=sm.getSvcPssSeq()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 수동인터페이스유형 : &nbsp;</td>
<td align='left' style="height:40px;">
&nbsp;<select name="psvItfTp" style="width:98%">
<%
int psvItfTpLength = EAITable.PSV_ITF_TYPE.length;
for(int j=0; j<psvItfTpLength; j++) {
%>
<option value="<%=EAITable.PSV_ITF_TYPE[j]%>" <%= (EAITable.PSV_ITF_TYPE[j].equals(sm.getPsvItfTp())) ? "selected" : "" %>><%=EAITable.PSV_ITF_TYPE[j]%>
<%
}
%>
</select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 수동업무시스템명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="psvBwkSysNm" style="width:98%" value="<%=sm.getPsvBwkSysNm()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 수동시스템ID : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="psvSysID" style="width:98%" value="<%=sm.getPsvSysID()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 수동시스템서비스코드 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="psvSysSvcCd" style="width:98%" value="<%=sm.getPsvSysSvcCd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 수동시스템인터페이스유형 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="psvSysItfTp" style="width:98%" value="<%=sm.getPsvSysItfTp()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; FailOver여부 : &nbsp;</td>
<td align='left' style="height:40px;">
&nbsp;<select name="flOvrCls" style="width:98%">
<%
int flOvrClsLength = EAITable.FAIL_OVER_CLS.length;
for(int j=0; j<flOvrClsLength; j++) {
%>
<option value="<%=EAITable.FAIL_OVER_CLS[j]%>" <%= (EAITable.FAIL_OVER_CLS[j].equals(sm.getFlOvrCls())) ? "selected" : "" %>><%=EAITable.FAIL_OVER_CLS[j]%>
<%
}
%>
</select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 변환유무 : &nbsp;</td>
<td align='left' style="height:40px;">
&nbsp;<select name="cnvEn" style="width:98%">
<%
int cnvEnLength = EAITable.CNV_EXIST_NOT.length;
for(int j=0; j<cnvEnLength; j++) {
%>
<option value="<%=EAITable.CNV_EXIST_NOT[j]%>" <%= (EAITable.CNV_EXIST_NOT[j].equals(sm.getCnvEn())) ? "selected" : "" %>><%=EAITable.CNV_EXIST_NOT[j]%>
<%
}
%>
</select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 변환메시지ID : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="cnvMsgID" style="width:98%" value="<%=sm.getCnvMsgID()%>"></td>
</tr>
<!--
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 응답메시지ID : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="rspMsgRefID" style="width:98%" value="<%=sm.getRspMsgRefID()%>"></td>
</tr>
-->
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 기본응답메시지비교값 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="bsRspMsgCprVl" style="width:98%" value="<%=sm.getBsRspMsgCprVl()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 기본응답변환유무 : &nbsp;</td>
<td align='left' style="height:40px;">
&nbsp;<select name="bsRspCnvEn" style="width:98%">
<%
int bsRspCnvEnLength = EAITable.BS_RSP_CNV_EXIST_NOT.length;
for(int j=0; j<bsRspCnvEnLength; j++) {
%>
<option value="<%=EAITable.BS_RSP_CNV_EXIST_NOT[j]%>" <%= (EAITable.BS_RSP_CNV_EXIST_NOT[j].equals(sm.getBsRspCnvEn())) ? "selected" : "" %>><%=EAITable.BS_RSP_CNV_EXIST_NOT[j]%>
<%
}
%>
</select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 기본응답변환메시지ID : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="bsRspCnvMsgID" style="width:98%" value="<%=sm.getBsRspCnvMsgID()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 오류응답메시지비교값 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="errRspMsgCprVl" style="width:98%" value="<%=sm.getErrRspMsgCprVl()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 오류응답변환유무 : &nbsp;</td>
<td align='left' style="height:40px;">
&nbsp;<select name="errRspCnvEn" style="width:98%">
<%
int errRspCnvEnLength = EAITable.ERR_RSP_CNV_EXIST_NOT.length;
for(int j=0; j<errRspCnvEnLength; j++) {
%>
<option value="<%=EAITable.ERR_RSP_CNV_EXIST_NOT[j]%>" <%= (EAITable.ERR_RSP_CNV_EXIST_NOT[j].equals(sm.getErrRspCnvEn())) ? "selected" : "" %>><%=EAITable.ERR_RSP_CNV_EXIST_NOT[j]%>
<%
}
%>
</select>
</td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 오류응답변환메시지ID : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="errRspCnvMsgID" style="width:98%" value="<%=sm.getErrRspCnvMsgID()%>"></td>
</tr>
<!--
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 키관리메시지값 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="keyMgtMsgVl" style="width:98%" value="<%=sm.getKeyMgtMsgVl()%>"></td>
</tr>
-->
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 다음서비스처리순서 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="nxtSvcPssSeq" style="width:98%" value="<%=sm.getNxtSvcPssSeq()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; Outbound라우팅명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="outbRtnNm" style="width:98%" value="<%=sm.getOutbRtnNm()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 타임아웃값 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="tmoVl" style="width:98%" value="<%=sm.getTmoVl()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 보상서비스처리코드 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="cpnsSvcPssCd" style="width:98%" value="<%=sm.getCpnsSvcPssCd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 추가삭제 여부 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="cpnsSvcPssCd" style="width:98%" value="<%=sm.getSupplDelYn()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 헤더제어구분코드 - [01/02]삭제추가/추가삭제 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="cpnsSvcPssCd" style="width:98%" value="<%=sm.getHdrCtrlDstcd()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 참고클래스명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="cpnsSvcPssCd" style="width:98%" value="<%=sm.getHdrRefClsName()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 타이머참고메시지ID : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<input type="text" name="tmRefMsgID" style="width:98%" value="<%=sm.getTmRefMsgID()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">참조메시지IDS</td>
<%
if(sm.getRefMsgIDs() == null || sm.getRefMsgIDs().length <= 0) {
%>
<td align='left' style="height:40px;">&nbsp; 0건 입니다. &nbsp; </td>
<%
}
else {
%>
<td align='left' >&nbsp;<a href="javascript:openRefMsgID('<%=sm.getEAISvcCd() %>');"><%=sm.getRefMsgIDs().length%>&nbsp; 건 &nbsp;</a> </td>
<%
}
%>
</tr>
<!-------------------------------------------------------------->
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">조건부라우팅정보테이블</td>
<%
if(sm.getCondPerRtgInfo() == null || sm.getCondPerRtgInfo().size() <= 0) {
%>
<td align='left' style="height:40px;">&nbsp; 0건 입니다. &nbsp; </td>
<%
}
else {
%>
<td align='left' >&nbsp;<a href="javascript:openCondPerRtgInfo('<%=sm.getEAISvcCd() %>','<%=sm.getSvcPssSeq()%>');"><%=sm.getCondPerRtgInfo().size()%>&nbsp; 건 &nbsp;</a> </td>
<%
}
%>
</tr>
<%
}
}
%>
</table>
</form>
</body>
</html>
+310
View File
@@ -0,0 +1,310 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.EAITable"%>
<%@ page import="com.eactive.eai.common.message.EAIMessage"%>
<%@ page import="com.eactive.eai.common.message.ServiceMessage"%>
<%@ page import="com.eactive.eai.common.message.EAIMessageManager"%>
<%@ page import="com.eactive.eai.common.monitor.EAIServiceMonitor"%>
<%@ page import="com.eactive.eai.common.monitor.MonitorVO"%>
<%@ page import="java.util.HashMap"%>
<%
String actionMessage = "";
EAIServiceMonitor monitor = EAIServiceMonitor.getInstance();
String[] voKey = monitor.getAllMonitorVOKey();
String action = request.getParameter("actionType");
MonitorVO vo = null;
String[] pssCntKey = null;
String[] pssErrCntKey = null;
HashMap pssCnt = null;
HashMap pssCntInPeriod = null;
HashMap errPssCnt = null;
HashMap errPssCntInPeriod = null;
String selectedSvcCds = request.getParameter("svcCds");
if(selectedSvcCds == null && voKey.length>=1) {
selectedSvcCds = voKey[0];
}
if(selectedSvcCds!=null) {
vo = monitor.getMonitorVO(selectedSvcCds);
if("RESET".equals(action)) {
vo.reset();
}
pssCntKey = vo.getAllPssCntKey();
pssCnt = vo.getPssCnt();
pssCntInPeriod = vo.getPssCntInPeriod();
errPssCnt = vo.getErrPssCnt();
errPssCntInPeriod = vo.getErrPssCntInPeriod();
}
if("ALLRESET".equalsIgnoreCase(action)){
monitor.resetAll();
}
else if("RESET_TOLIST".equalsIgnoreCase(action)){
actionMessage = monitor.resetErrorList();
}
%>
<html>
<head>
<title>Service ID/Log Sequence 별 통계 Monitor</title>
<script type="text/javascript">
function doAction() {
document.frm.submit();
}
function doReset() {
document.frm.actionType.value="RESET";
document.frm.submit();
}
function doAllReset() {
document.frm.actionType.value="ALLRESET";
document.frm.submit();
}
function doResetToList() {
document.frm.actionType.value="RESET_TOLIST";
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;"><b>Service ID/Log Sequence 별 통계 데이터</b> <br>
<% if(actionMessage != null && actionMessage.length() > 0) { %>
Action result : <%= actionMessage %><br>
<% } %>
<br>
</p>
<form name="frm" action=""><input type="hidden" name="actionType" value="">
<table border='0' width="800">
<tr>
<td align='left'>
<table width="450" border="0" bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff">EAI Service Message ID : &nbsp;</td>
<td align='left'>&nbsp;<select name="svcCds" onchange="doAction();">
<%
for(int i=0;i<voKey.length;i++) {
%>
<option value="<%=voKey[i]%>" <%= (voKey[i].equals(selectedSvcCds)) ? "selected" : "" %>><%=voKey[i]%> <%
}
%></option>
</select></td>
</tr>
</table>
</td>
<td align='right'><input type="button" value="RESET" onclick="doReset()"></td>
<td align='right'><input type="button" value="ALL RESET" onclick="doAllReset()"></td>
<td align='right'><input type="button" value="reload Timeout Error Code" onclick="doResetToList()"></td>
</tr>
</table>
<br>
<table width="800" border="0" bgcolor='black' cellpadding="1" cellspacing="1">
<%
if(pssCntKey != null && pssCntKey.length >0){
if(vo != null) {
pssErrCntKey = vo.getAllErrPssCntKey();
int pssCntKeyLength = pssCntKey.length;
int pssErrCntKeyLength = pssErrCntKey.length;
%>
<tr bgcolor='white'>
<td align='center' bgcolor="#003366" colspan="11">&nbsp;<font color="yellow">&nbsp; <b>일일 통계</b></font></td>
</tr>
<tr bgcolor='white'>
<td align='right' width="200" bgcolor="#6699cc" rowspan="2">구분</td>
<td align='center' bgcolor="#6699cc" colspan="<%= pssErrCntKeyLength %>">Log Sequence 별 처리 누적</td>
<td align='center' bgcolor="#6699cc" rowspan="2">EAI 시스템 평균 처리시간(초)</td>
<td align='center' bgcolor="#6699cc" rowspan="2">수동 시스템 평균 처리시간(초)</td>
</tr>
<tr bgcolor='white'>
<%
long[] verTotal = new long[pssErrCntKeyLength];
long[] verInPeriodTotal = new long[pssErrCntKeyLength];
for(int i=0;i<pssErrCntKeyLength;i++) {
%>
<td align='center' width='40' bgcolor="#ccccff"><%=pssErrCntKey[i]%></td>
<%
}
%>
</tr>
<tr bgcolor='white'>
<td align='center' width="200" bgcolor="#6699cc">정상</td>
<%
for(int i=0;i<pssCntKeyLength;i++) {
verTotal[i] = verTotal[i]+Long.parseLong(pssCnt.get(pssCntKey[i]).toString());
%>
<td align='right'>&nbsp;<input align='right' type="text" name="recvCount" size='10'
value="<%=pssCnt.get(pssCntKey[i])%>"></td>
<%
}
double avgOfprocessTime = 0;
double psvAvgOfProcessTime = 0;
if("AA".equalsIgnoreCase(vo.getIfType())){
if(Long.parseLong(pssCnt.get(pssCntKey[1]).toString()) >0 && vo.getSumOfprocessTime() > 0 ){
avgOfprocessTime = vo.getSumOfprocessTime()/1000/Long.parseLong(pssCnt.get(pssCntKey[1]).toString());
}
if(Long.parseLong(pssCnt.get(pssCntKey[3]).toString()) >0 && vo.getSumOfprocessTime() > 0 ){
avgOfprocessTime = vo.getSumOfprocessTime()/1000/Long.parseLong(pssCnt.get(pssCntKey[3]).toString());
}
}
else{
if(Long.parseLong(pssCnt.get(pssCntKey[3]).toString()) >0 && vo.getSumOfprocessTime() > 0 ){
avgOfprocessTime = vo.getSumOfprocessTime()/1000/Long.parseLong(pssCnt.get(pssCntKey[3]).toString());
}
}
if(Long.parseLong(pssCnt.get(pssCntKey[2]).toString()) > 0 && vo.getPsvSumOfPssTime() > 0 ){
psvAvgOfProcessTime = vo.getPsvSumOfPssTime()/1000/Long.parseLong(pssCnt.get(pssCntKey[2]).toString());
}
System.out.println("vo.getPsvSumOfPssTime() : "+ vo.getPsvSumOfPssTime());
%>
<td align='right'>&nbsp;<input align='right' type="text" name="recvCountInPeriod" size='10' value="0"></td>
<td align='right' rowspan="3">&nbsp;<input align='right' type="text" name="avgOfprocessTime" size='10'
value="<%=avgOfprocessTime%>"></td>
<td align='right' rowspan="3">&nbsp;<input align='right' type="text" name="psvAvgOfProcessTime" size='10'
value="<%=psvAvgOfProcessTime%>"></td>
</tr>
<tr bgcolor='white'>
<td align='center' width="200" bgcolor="#6699cc">에러</td>
<%
for(int i=0;i<pssErrCntKeyLength;i++) {
verTotal[i] = verTotal[i] + Long.parseLong(errPssCnt.get(pssErrCntKey[i]).toString());
%>
<td align='right'>&nbsp;<input align='right' type="text" name="errorCount" size='10'
value="<%=errPssCnt.get(pssErrCntKey[i])%>"></td>
<%
}
%>
</tr>
<tr bgcolor='white'>
<td align='center' width="200" bgcolor="#6699cc">합계</td>
<%
for(int i=0;i<pssErrCntKeyLength;i++) {
%>
<td align='right'><input align='right' type="text" name="sumOfLogSeqInPeriod" size='10' value="<%=verTotal[i]%>"></td>
<%
}
%>
</tr>
<!--- 최근시간 --->
<tr bgcolor='white'>
<td align='center' bgcolor="#003366" colspan="11">&nbsp;<font color="yellow">&nbsp; <b>최근시간 통계</b></font></td>
</tr>
<tr bgcolor='white'>
<td align='center' width="200" bgcolor="#6699cc" rowspan="2">구분</td>
<td align='center' bgcolor="#6699cc" colspan="<%= pssErrCntKeyLength %>">Log Sequence 별 처리 누적</td>
<td align='center' bgcolor="#6699cc" rowspan="2">EAI 시스템 평균 처리시간(초)</td>
<td align='center' bgcolor="#6699cc" rowspan="2">수동 시스템 평균 처리시간(초)</td>
</tr>
<tr bgcolor='white'>
<%
for(int i=0;i<pssErrCntKeyLength;i++) {
%>
<td align='center' width='40' bgcolor="#ccccff"><%=pssErrCntKey[i]%></td>
<%
}
%>
</tr>
<tr bgcolor='white'>
<td align='center' width="200" bgcolor="#6699cc">정상</td>
<%
for(int i=0;i<pssCntKeyLength;i++) {
verInPeriodTotal[i] = verInPeriodTotal[i]+Long.parseLong(pssCntInPeriod.get(pssCntKey[i]).toString());
%>
<td align='right'>&nbsp;<input align='right' type="text" name="recvCountInPeriod" size='10'
value="<%=pssCntInPeriod.get(pssCntKey[i])%>"></td>
<%
}
double avgOfprocessTimeInPeriod = 0;
double psvAvgOfProcessTimeInPeriod = 0;
if("AA".equalsIgnoreCase(vo.getIfType())){
if(Long.parseLong(pssCntInPeriod.get(pssCntKey[1]).toString()) >0 && vo.getSumOfProcessTimeInPeriod() > 0){
avgOfprocessTimeInPeriod = vo.getSumOfProcessTimeInPeriod()/1000/Long.parseLong(pssCntInPeriod.get(pssCntKey[1]).toString());
}
if(Long.parseLong(pssCntInPeriod.get(pssCntKey[3]).toString()) >0 && vo.getSumOfProcessTimeInPeriod() > 0){
avgOfprocessTimeInPeriod = vo.getSumOfProcessTimeInPeriod()/1000/Long.parseLong(pssCntInPeriod.get(pssCntKey[3]).toString());
}
}
else{
if(Long.parseLong(pssCntInPeriod.get(pssCntKey[3]).toString()) >0 && vo.getSumOfProcessTimeInPeriod() > 0){
avgOfprocessTimeInPeriod = vo.getSumOfProcessTimeInPeriod()/1000/Long.parseLong(pssCntInPeriod.get(pssCntKey[3]).toString());
}
}
if(Long.parseLong(pssCntInPeriod.get(pssCntKey[2]).toString()) >0 && vo.getPsvSumOfPssTimeInPeriod() > 0){
psvAvgOfProcessTimeInPeriod = vo.getPsvSumOfPssTimeInPeriod()/1000/Long.parseLong(pssCntInPeriod.get(pssCntKey[2]).toString());
}
%>
<td align='right'>&nbsp;<input align='right' type="text" name="recvCountInPeriod" size='10' value="0"></td>
<td align='right' rowspan="3">&nbsp;<input align='right' type="text" name="avgOfprocessTimeInPeriod" size='10'
value="<%=avgOfprocessTimeInPeriod%>"></td>
<td align='right' rowspan="3">&nbsp;<input align='right' type="text" name="psvAvgOfProcessTimeInPeriod" size='10'
value="<%=psvAvgOfProcessTimeInPeriod%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' width="200" bgcolor="#6699cc">에러</td>
<%
for(int i=0;i<pssErrCntKeyLength;i++) {
verInPeriodTotal[i] = verInPeriodTotal[i] + Long.parseLong(errPssCntInPeriod.get(pssErrCntKey[i]).toString());
%>
<td align='right'>&nbsp;<input align='right' type="text" name="sendCount" size='10'
value="<%=errPssCntInPeriod.get(pssErrCntKey[i])%>"></td>
<%
}
%>
</tr>
<tr bgcolor='white'>
<td align='center' width="200" bgcolor="#6699cc">합계</td>
<%
for(int i=0;i<pssErrCntKeyLength;i++) {
%>
<td align='right'><input align='right' type="text" name="sumOfLogSeqInPeriod" size='10'
value="<%=verInPeriodTotal[i]%>"></td>
<%
}
%>
</tr>
<%
}
} else{
%>
</table>
해당 서비스 ID에 대한 거래 내역이 없습니다. <%
}
%></form>
</body>
</html>
+407
View File
@@ -0,0 +1,407 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.EAITable"%>
<%@ page import="com.eactive.eai.common.message.EAIMessage"%>
<%@ page import="com.eactive.eai.common.message.ServiceMessage"%>
<%@ page import="com.eactive.eai.common.message.EAIMessageManager"%>
<%@ page import="com.eactive.eai.common.monitor.EAIServiceMonitor"%>
<%@ page import="com.eactive.eai.common.monitor.MonitorVO"%>
<%@ page import="java.util.HashMap"%>
<%
EAIServiceMonitor monitor = EAIServiceMonitor.getInstance();
String[] voKey = monitor.getAllBwkClsKey();
String action = request.getParameter("actionType");
String[] pssCntKey = null;
String[] pssErrCntKey = null;
HashMap pssCnt = null;
HashMap pssCntInPeriod = null;
HashMap errPssCnt = null;
HashMap errPssCntInPeriod = null;
HashMap voByBwk = null;
long[] verTotalByBwk = null;;
long[] verTotalInPeriodByBwk = null;
double sumOfprocessTimeByBwk = 0;
double psvSumOfProcessTimeByBwk = 0;
double sumOfprocessTimeInPeriodByBwk = 0;
double psvSumOfProcessTimeInPeriodByBwk = 0;
double avgOfprocessTimeByBwk = 0;
double psvAvgOfProcessTimeByBwk = 0;
double avgOfprocessTimeInPeriodByBwk = 0;
double psvAvgOfProcessTimeInPeriodByBwk = 0;
int countEaiSvcCd = 0;
int countEaiSvcCdInPeriod = 0;
String selectedBwkCls = request.getParameter("bwkCls");
if(selectedBwkCls == null && voKey.length>=1){
selectedBwkCls = voKey[0];
}
if(selectedBwkCls!=null) {
voByBwk = monitor.getBwkCls(selectedBwkCls);
}
%>
<html>
<head>
<title>
업무구분 코드/Log Sequence 별 통계 Monitor
</title>
<script>
function doAction() {
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>업무구분 코드/Log Sequence 별 통계 데이터</b> <br><br>
</p>
<form name="frm" method="POST" action="">
<input type="hidden" name="actionType" value="">
<table border='0' width="800" >
<tr>
<td align='left'>
<table width="450" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff"><label value="업무 구분 : "/>&nbsp;</td>
<td align='left'>&nbsp;<select name="bwkCls" onchange="doAction();">
<%
for(int i=0;i<voKey.length;i++) {
%>
<option value="<%=voKey[i]%>" <%= (voKey[i].equals(selectedBwkCls)) ? "selected" : "" %>><%=voKey[i]%>
<%
}
%></select>
</td>
</tr>
</table>
</td>
</tr>
</table><br>
<%
if(voByBwk != null){
Iterator it = voByBwk.keySet().iterator();
String[] keys = new String[voByBwk.size()];
for(int i = 0; it.hasNext(); i++){
keys[i] = (String)it.next();
}
Arrays.sort(keys);
%>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='center' bgcolor="#990000" colspan="11">&nbsp;<font color="yellow">&nbsp; <b>일일 통계</b></font></td>
</tr>
<%
for(int j = 0; j< keys.length; j++){
MonitorVO vo = (MonitorVO)voByBwk.get(keys[j]);
pssCntKey = vo.getAllPssCntKey();
pssCnt = vo.getPssCnt();
errPssCnt = vo.getErrPssCnt();
pssErrCntKey = vo.getAllErrPssCntKey();
//verTotalByBwk = new long[pssCntKey.length];
//verTotalInPeriodByBwk = new long[pssCntKey.length];
verTotalByBwk = new long[pssErrCntKey.length];
verTotalInPeriodByBwk = new long[pssErrCntKey.length];
if(pssCntKey != null && pssCntKey.length >0){
countEaiSvcCd ++;
int pssCntKeyLength = pssCntKey.length;
int pssErrCntKeyLength = pssErrCntKey.length;
%>
<tr bgcolor='white'>
<td align='center' bgcolor="#003366" >&nbsp;<font color="yellow"><b>EAI Service Code</b></font></td>
<td align='left' colspan="10">&nbsp;<%=keys[j]%></td>
</tr>
<tr bgcolor='white'>
<td align='center' width="200" bgcolor="#6699cc" rowspan ="2">구분</td>
<td align='center' bgcolor="#6699cc" colspan="<%= pssErrCntKeyLength %>">Log Sequence 별 처리 누적 </td>
<td align='center' bgcolor="#6699cc" rowspan ="2">EAI 시스템 평균 처리시간(초) </td>
<td align='center' bgcolor="#6699cc" rowspan ="2">수동 시스템 평균 처리시간(초) </td>
</tr>
<tr bgcolor='white'>
<%
long[] verTotal = new long[pssErrCntKeyLength];
for(int i=0;i<pssErrCntKeyLength;i++) {
%>
<td align='center' width='40' bgcolor="#ccccff"><%=pssErrCntKey[i]%></td>
<%
}
%>
</tr>
<tr bgcolor='white'>
<td align='center' width="200" bgcolor="#6699cc" >정상</td>
<%
for(int i=0;i<pssCntKeyLength;i++) {
verTotal[i] = verTotal[i]+Long.parseLong(pssCnt.get(pssCntKey[i]).toString());
%>
<td align='right'>&nbsp;<input align='right' type="text" name="recvCount" size='10' value="<%=pssCnt.get(pssCntKey[i])%>"> </td>
<%
}
double avgOfprocessTime = 0;
double psvAvgOfProcessTime = 0;
if("AA".equalsIgnoreCase(vo.getIfType())){
if(Long.parseLong(pssCnt.get(pssCntKey[1]).toString()) >0 && vo.getSumOfprocessTime() > 0 ){
avgOfprocessTime = vo.getSumOfprocessTime()/1000/Long.parseLong(pssCnt.get(pssCntKey[1]).toString());
sumOfprocessTimeByBwk = sumOfprocessTimeByBwk + avgOfprocessTime;
avgOfprocessTimeByBwk = sumOfprocessTimeByBwk / countEaiSvcCd;
}
if(Long.parseLong(pssCnt.get(pssCntKey[3]).toString()) >0 && vo.getSumOfprocessTime() > 0 ){
avgOfprocessTime = vo.getSumOfprocessTime()/1000/Long.parseLong(pssCnt.get(pssCntKey[3]).toString());
sumOfprocessTimeByBwk = sumOfprocessTimeByBwk + avgOfprocessTime;
avgOfprocessTimeByBwk = sumOfprocessTimeByBwk / countEaiSvcCd;
}
}
else{
if(Long.parseLong(pssCnt.get(pssCntKey[3]).toString()) >0 && vo.getSumOfprocessTime() > 0 ){
avgOfprocessTime = vo.getSumOfprocessTime()/1000/Long.parseLong(pssCnt.get(pssCntKey[3]).toString());
}
sumOfprocessTimeByBwk = sumOfprocessTimeByBwk + avgOfprocessTime;
avgOfprocessTimeByBwk = sumOfprocessTimeByBwk / countEaiSvcCd;
}
if(Long.parseLong(pssCnt.get(pssCntKey[2]).toString()) > 0 && vo.getPsvSumOfPssTime() > 0 ){
psvAvgOfProcessTime = vo.getPsvSumOfPssTime()/1000/Long.parseLong(pssCnt.get(pssCntKey[2]).toString());
psvSumOfProcessTimeByBwk = psvSumOfProcessTimeByBwk + psvAvgOfProcessTime;
psvAvgOfProcessTimeByBwk = psvSumOfProcessTimeByBwk / countEaiSvcCd;
}
%>
<td align='right'>&nbsp;<input align='right' type="text" name="recvCount2" size='10'value="0">
<td align='right' rowspan="3">&nbsp;<input align='right' type="text" name="avgOfprocessTime" size='10' value="<%=avgOfprocessTime%>"> </td>
<td align='right' rowspan="3">&nbsp;<input align='right' type="text" name="psvAvgOfProcessTime" size='10' value="<%=psvAvgOfProcessTime%>"> </td>
</tr>
<tr bgcolor='white'>
<td align='center' width="200" bgcolor="#6699cc" >에러</td>
<%
for(int i=0;i<pssErrCntKeyLength;i++) {
verTotal[i] = verTotal[i] + Long.parseLong(errPssCnt.get(pssErrCntKey[i]).toString());
%>
<td align='right'>&nbsp;<input align='right' type="text" name="errorCount" size='10' value="<%=errPssCnt.get(pssErrCntKey[i])%>"> </td>
<%
}
%>
</tr>
<tr bgcolor='white'>
<td align='center' width="200" bgcolor="#6699cc">합계</td>
<%
for(int i=0;i<pssErrCntKeyLength;i++) {
verTotalByBwk[i] = verTotalByBwk[i] + verTotal[i];
%>
<td align='right' ><input align='right' type="text" name="sumOfLogSeq" size='10' value="<%=verTotal[i]%>"> </td>
<%
}
%>
</tr>
<%
}
}
%>
<tr bgcolor='white'>
<td align='center' bgcolor="#990000" >&nbsp;<font color="yellow"><b>합계</b></font></td>
<%
for(int i=0;i<verTotalByBwk.length;i++) {
%>
<td align='right' ><input align='right' type="text" name="sumOfLogSeqByBwk" size='10' value="<%=verTotalByBwk[i]%>"> </td>
<%
}
%>
<td align='right' rowspan="3">&nbsp;<input align='right' type="text" name="avgOfprocessTimeByBwk" size='10'value="<%=avgOfprocessTimeByBwk%>"> </td>
<td align='right' rowspan="3">&nbsp;<input align='right' type="text" name="psvAvgOfProcessTimeByBwk" size='10'value="<%=psvAvgOfProcessTimeByBwk %>"> </td>
</tr>
</table>
<br>
<!--- 최근시간 --->
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='center' bgcolor="#990000" colspan="11">&nbsp;<font color="yellow">&nbsp; <b>최근시간 통계</b></font></td>
</tr>
<%
for(int j = 0; j< keys.length; j++){
MonitorVO vo = (MonitorVO)voByBwk.get(keys[j]);
pssCntKey = vo.getAllPssCntKey();
pssCntInPeriod = vo.getPssCntInPeriod();
errPssCntInPeriod = vo.getErrPssCntInPeriod();
pssErrCntKey = vo.getAllErrPssCntKey();
if(pssCntKey != null && pssCntKey.length >0){
countEaiSvcCdInPeriod++;
int pssCntKeyLength = pssCntKey.length;
int pssErrCntKeyLength = pssErrCntKey.length;
%>
<tr bgcolor='white'>
<td align='center' bgcolor="#003366" >&nbsp;<font color="yellow">&nbsp; <b>EAI Service Code</b></font></td>
<td align='left' colspan="10">&nbsp;<%=keys[j]%></td>
</tr>
<tr bgcolor='white'>
<td align='center' width="200" bgcolor="#6699cc" rowspan ="2">구분</td>
<td align='center' bgcolor="#6699cc" colspan="<%= pssErrCntKeyLength %>">Log Sequence 별 처리 누적 </td>
<td align='center' bgcolor="#6699cc" rowspan ="2">EAI 시스템 평균 처리시간(초) </td>
<td align='center' bgcolor="#6699cc" rowspan ="2">수동 시스템 평균 처리시간(초) </td>
</tr>
<tr bgcolor='white'>
<%
long[] verInPeriodTotal = new long[pssErrCntKeyLength];
for(int i=0;i<pssErrCntKeyLength;i++) {
%>
<td align='center' width='40' bgcolor="#ccccff"><%=pssErrCntKey[i]%></td>
<%
}
%>
</tr>
<tr bgcolor='white'>
<td align='center' width="200" bgcolor="#6699cc" >정상</td>
<%
for(int i=0;i<pssCntKeyLength;i++) {
verInPeriodTotal[i] = verInPeriodTotal[i]+Long.parseLong(pssCntInPeriod.get(pssCntKey[i]).toString());
%>
<td align='right'>&nbsp;<input align='right' type="text" name="recvCountInPeriod" size='10' value="<%=pssCntInPeriod.get(pssCntKey[i])%>"> </td>
<%
}
double avgOfprocessTimeInPeriod = 0;
double psvAvgOfProcessTimeInPeriod = 0;
if("AA".equalsIgnoreCase(vo.getIfType())){
if(Long.parseLong(pssCntInPeriod.get(pssCntKey[1]).toString()) >0 && vo.getSumOfProcessTimeInPeriod() > 0){
avgOfprocessTimeInPeriod = vo.getSumOfProcessTimeInPeriod()/1000/Long.parseLong(pssCntInPeriod.get(pssCntKey[1]).toString());
sumOfprocessTimeInPeriodByBwk = sumOfprocessTimeInPeriodByBwk + avgOfprocessTimeInPeriod;
avgOfprocessTimeInPeriodByBwk = sumOfprocessTimeInPeriodByBwk / countEaiSvcCdInPeriod;
}
if(Long.parseLong(pssCntInPeriod.get(pssCntKey[3]).toString()) >0 && vo.getSumOfProcessTimeInPeriod() > 0){
avgOfprocessTimeInPeriod = vo.getSumOfProcessTimeInPeriod()/1000/Long.parseLong(pssCntInPeriod.get(pssCntKey[3]).toString());
sumOfprocessTimeInPeriodByBwk = sumOfprocessTimeInPeriodByBwk + avgOfprocessTimeInPeriod;
avgOfprocessTimeInPeriodByBwk = sumOfprocessTimeInPeriodByBwk / countEaiSvcCdInPeriod;
}
}
else{
if(Long.parseLong(pssCntInPeriod.get(pssCntKey[3]).toString()) >0 && vo.getSumOfProcessTimeInPeriod() > 0){
avgOfprocessTimeInPeriod = vo.getSumOfProcessTimeInPeriod()/1000/Long.parseLong(pssCntInPeriod.get(pssCntKey[3]).toString());
sumOfprocessTimeInPeriodByBwk = sumOfprocessTimeInPeriodByBwk + avgOfprocessTimeInPeriod;
avgOfprocessTimeInPeriodByBwk = sumOfprocessTimeInPeriodByBwk / countEaiSvcCdInPeriod;
}
}
if(Long.parseLong(pssCntInPeriod.get(pssCntKey[2]).toString()) >0 && vo.getPsvSumOfPssTimeInPeriod() > 0){
psvAvgOfProcessTimeInPeriod = vo.getPsvSumOfPssTimeInPeriod()/1000/Long.parseLong(pssCntInPeriod.get(pssCntKey[2]).toString());
psvSumOfProcessTimeInPeriodByBwk = psvSumOfProcessTimeInPeriodByBwk + psvAvgOfProcessTimeInPeriod;
psvAvgOfProcessTimeInPeriodByBwk = psvSumOfProcessTimeInPeriodByBwk / countEaiSvcCdInPeriod;
}
%>
<td align='right'>&nbsp;<input align='right' type="text" name="recvCountInPeriod" size='10' value="0"></td>
<td align='right' rowspan="3">&nbsp;<input align='right' type="text" name="avgOfprocessTimeInPeriod" size='10' value="<%=avgOfprocessTimeInPeriod%>"> </td>
<td align='right' rowspan="3">&nbsp;<input align='right' type="text" name="psvAvgOfProcessTimeInPeriod" size='10' value="<%=psvAvgOfProcessTimeInPeriod%>"> </td>
</tr>
<tr bgcolor='white'>
<td align='center' width="200" bgcolor="#6699cc" >에러</td>
<%
for(int i=0;i<pssErrCntKeyLength;i++) {
verInPeriodTotal[i] = verInPeriodTotal[i] + Long.parseLong(errPssCntInPeriod.get(pssErrCntKey[i]).toString());
%>
<td align='right'>&nbsp;<input align='right' type="text" name="sendCount" size='10'value="<%=errPssCntInPeriod.get(pssErrCntKey[i])%>"> </td>
<%
}
%>
</tr>
<tr bgcolor='white'>
<td align='center' width="200" bgcolor="#6699cc">합계</td>
<%
for(int i=0;i<pssErrCntKeyLength;i++) {
verTotalInPeriodByBwk[i] = verTotalInPeriodByBwk[i] + verInPeriodTotal[i];
%>
<td align='right' ><input align='right' type="text" name="sumOfLogSeqInPeriod" size='10' value="<%=verInPeriodTotal[i]%>"> </td>
<%
}
%>
</tr>
<%
}
}
%>
<tr bgcolor='white'>
<td align='center' bgcolor="#990000" >&nbsp;<font color="yellow"><b>합계</b></font></td>
<%
for(int i=0;i<verTotalInPeriodByBwk.length;i++) {
%>
<td align='right' ><input align='right' type="text" name="sumOfLogSeqInPeriodByBwk" size='10' value="<%=verTotalInPeriodByBwk[i]%>"> </td>
<%
}
%>
<td align='right' rowspan="3">&nbsp;<input align='right' type="text" name="sumOfprocessTimeInPeriodByBwk" size='10' value="<%=avgOfprocessTimeInPeriodByBwk%>"> </td>
<td align='right' rowspan="3">&nbsp;<input align='right' type="text" name="psvSumOfProcessTimeInPeriodByBwk" size='10' value="<%=psvAvgOfProcessTimeInPeriodByBwk %>"> </td>
</tr>
</table>
<%
}else{
%>
해당 업무 구분에 대한 거래 내역이 없습니다.
<%
}
%>
</form>
</body>
</html>
+158
View File
@@ -0,0 +1,158 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.adapter.AdapterVO"%>
<%@ page import="com.eactive.eai.agent.command.Command"%>
<%@ page import="com.eactive.eai.agent.testcall.TestCallCommand"%>
<%@ page import="com.eactive.eai.agent.AgentUtil"%>
<%@ page import="com.eactive.eai.common.property.PropManager"%>
<%@ page import="com.eactive.eai.common.testcall.TestCall"%>
<%@ page import="com.eactive.eai.common.testcall.TestCallManager"%>
<%
TestCallManager manager = TestCallManager.getInstance();
ArrayList names = new ArrayList();
String action = request.getParameter("actionType");
String period = request.getParameter("period");
Properties prop = new Properties();
Iterator it = manager.getAllAdapterNames();
while(it.hasNext()) {
names.add(it.next());
}
Collections.sort(names);
if(period == null|| period.length()<=0){
PropManager pmanager = PropManager.getInstance();
long temp = 1000*60*10;
try {
temp = Long.parseLong(pmanager.getProperty(manager.PROP_GROUP, manager.PROP_PERIOD));
} catch(Exception e) {}
period = ""+temp;
}
String run = "";
if("UPDATE".equals(action)) {
prop.setProperty("PERIOD", period);
Command command = new TestCallCommand();
command.setArgs(prop);
AgentUtil.broadcast(command);
}
if("START".equals(action)){
run = "START";
prop.setProperty("RUN",run);
Command command = new TestCallCommand();
command.setArgs(prop);
AgentUtil.broadcast(command);
}
if("STOP".equals(action)){
run = "STOP";
prop.setProperty("RUN",run);
Command command = new TestCallCommand();
command.setArgs(prop);
AgentUtil.broadcast(command);
}
String status = "";
if(manager.isStarted())
status = "시작됨";
else
status = "종료됨";
%>
<html>
<head>
<title>
TestCall Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function doStop() {
document.frm.actionType.value="STOP";
document.frm.submit();
}
function doStart() {
document.frm.actionType.value="START";
document.frm.submit();
}
function doUpdate() {
document.frm.actionType.value="UPDATE";
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>TestCall Configuration</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table border='0' width="800" >
<tr>
<td align='left'>
<table width="450" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff"><label value="동작주기 : "/>&nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="period" size='20' value="<%=period%>" ></td>
<td align='left'> <input type="button" value="UPDATE" onclick="doUpdate()">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align='left'>
<input type="text" name="period" size='20' value="<%=status%>" readonly >
</td>
<td align='left'>
<input type="button" value="STOP" onclick="doStop()">
</td>
<td align='left'>
<input type="button" value="START" onclick="doStart()">
</td>
<td></td><td></td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#003366">&nbsp; <font color="yellow"><b>항목</b> &nbsp;</font></td>
<td align='left' bgcolor="#003366">&nbsp;<font color="yellow">&nbsp; <b>내용</b></font></td>
</tr>
<%
if(names != null || names.size() > 0 ) {
int length = names.size();
for(int i=0; i<length; i++){
TestCall tester = manager.getTestCall((String)names.get(i));
AdapterVO vo = tester.getAdapterInfo();
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; Adapter Name : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="name" size='60' value="<%=vo.getName()%>" readonly></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; Adapter 상태 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="name" size='60' value="<%=tester.isAlive()%>" readonly></td>
</tr>
<%
}
}
%>
</table>
</form>
</body>
</html>
+103
View File
@@ -0,0 +1,103 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.transformer.engine.TransformEngine"%>
<%
String action = request.getParameter("actionType");
TransformEngine engine = TransformEngine.getInstance();
String status = "";
if("START".equals(action)){
engine.start();
}
if("STOP".equals(action)){
engine.stop();
}
if(engine.isStarted())
status = "시작됨";
else
status = "종료됨";
%>
<html>
<head>
<title>
TransRuleReload Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function doStop() {
document.frm.actionType.value="STOP";
document.frm.submit();
}
function doStart() {
document.frm.actionType.value="START";
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>TransRuleReload Configuration</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' bgcolor="#003366">&nbsp; <font color="yellow"><b>항목</b> &nbsp;</font></td>
<td align='left' bgcolor="#003366">&nbsp; <font color="yellow"><b>설명</b> &nbsp;</font></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff">현재상태 :&nbsp;&nbsp;</td>
<td align='left' style="height: 40;">&nbsp;<input type="text" name="period" value="<%=status%>" readonly ></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff">상태변경 버튼 :&nbsp;&nbsp;</td>
<%
if ("시작됨".equals(status)){
%>
<td align='left' style="height: 40;">&nbsp;<input type="button" value="STOP" onclick="doStop()"></td>
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff">버튼설명 :&nbsp;&nbsp;</td>
<td>&nbsp;TransformEngine 에서 clearEngine()을 실행합니다.</td>
</tr>
<%
} else {
%>
<td align='left'>
<input type="button" value="START" onclick="doStart()">
</td>
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff">버튼설명 :&nbsp;&nbsp;</td>
<td>&nbsp;&TransformEngine 에서 initEngine()을 실행합니다.</td>
</tr>
<%
}
%>
<tr bgcolor='white'>
<td rowspan=4 align='right' width='180' bgcolor="#ccccff">실행Manager :&nbsp;&nbsp;</td>
<td>&nbsp;LayoutTypeManager</td>
</tr>
<tr bgcolor='white'>
<td>&nbsp;FunctionManager</td>
</tr>
<tr bgcolor='white'>
<td>&nbsp;LayoutManager</td>
</tr>
<tr bgcolor='white'>
<td>&nbsp;TransformManager</td>
</tr>
</table><br>
</form>
</body>
</html>
+214
View File
@@ -0,0 +1,214 @@
<%--
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.transformer.layout.Layout"%>
<%@ page import="com.eactive.eai.transformer.transform.Transform"%>
<%@ page import="com.eactive.eai.transformer.transform.TransformItem"%>
<%@ page import="com.eactive.eai.transformer.transform.TransformManager"%>
<%@ page import="com.eactive.eai.transformer.util.TransformKeys"%>
<%@ page import="java.util.HashMap"%>
<%!
/**
* <pre>
* 문자열을 받아서 널이면 제로스트링을, 아니면 트림된 문자열을 리턴.
* </pre>
* @param String 변환 대상
* @return 'String'
*/
public static String checkNull( String str ) {
String sResult = new String();
if ( str == null ) {
sResult = "";
}
else {
sResult = str.trim();
}
return sResult;
}
%>
<%
TransformManager manager = TransformManager.getManager();
String key[] = manager.getAllTransformName();
String selected = request.getParameter("transformName");
if(selected == null && key.length>=1) {
selected = key[0];
}
Transform transform = null;
ArrayList itemList = new ArrayList();
Layout target = null;
Iterator it = null;
if(selected!=null) {
transform = manager.getTransform(selected);
target = transform.getTargetLayout();
itemList = (ArrayList) transform.getTransformItemList();
it = transform.getSourceLayoutNames();
}
int sourceCount = transform.getSourceLayoutCount();
String sourceName = "";
for (int i=0; i < sourceCount; i++) {
if ("".equals(sourceName))
sourceName = (String)it.next();
else
sourceName = sourceName+" , " + (String)it.next();
}
%>
<html>
<head>
<title>
Transform 변환규칙 Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>Transform 변환규칙 Configuration</b> <br><br>
</p>
<form name="frm" action="">
<table border='0' width="800" >
<tr>
<td align='left'>
<table width="450" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff"><label value="변환명 : "/>&nbsp;</td>
<td align='left'>&nbsp;<select name="transformName" onchange="doAction();">
<%
for(int i=0;i<key.length;i++) {
%>
<option value="<%=key[i]%>" <%= (key[i].equals(selected)) ? "selected" : "" %>><%=key[i]%>
<%
}
%></select>
</td>
</tr>
</table>
</td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan='2' width='250' bgcolor="#003366">&nbsp; <font color="yellow"><b>변환규칙정보</b> &nbsp;</font></td>
</tr>
<%
if(transform != null ){
%>
<tr bgcolor='white'>
<td align='right' width='250' bgcolor="#ccccff">&nbsp; 변환규칙명 : &nbsp;</td>
<td align='left'>&nbsp;<%=transform.getName()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='250' bgcolor="#ccccff">&nbsp; 변환규칙설명 : &nbsp;</td>
<td align='left'>&nbsp;<%=checkNull(transform.getDescription())%></td>
</tr>
<%
} else {
%>
<tr bgcolor='white'>
<td align='center' colspan="2" >&nbsp; 요청하신 변환규칙 정보가 없습니다. &nbsp;</td>
</tr>
<%
}
%>
</table>
<br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan='2' width='250' bgcolor="#003366">&nbsp; <font color="yellow"><b>변환소스결과레이아웃 정보</b> &nbsp;</font></td>
</tr>
<%
if (target != null || it.hasNext()) {
%>
<tr bgcolor='white'>
<td align='center' width='' bgcolor="#ccccff">&nbsp; 소스레이아웃(2개이상일경우 콤마(,)로 구분) &nbsp;</td>
<td align='center' width='' bgcolor="#ccccff">&nbsp; 결과 레이아웃 &nbsp;</td>
</tr>
<tr bgcolor='white'>
<td align='center'>&nbsp;<%=sourceName%></td>
<td align='center'>&nbsp;<%=target.getName()%></td>
</tr>
<%
} else {
%>
<tr bgcolor='white'>
<td align='center' colspan="2" >&nbsp; 요청하신 변환소스결과레이아웃 정보가 없습니다. &nbsp;</td>
</tr>
<%
}
%>
</table>
<br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan='2' width='250' bgcolor="#003366">&nbsp; <font color="yellow"><b>변환아이템 정보</b> &nbsp;</font></td>
</tr>
<%
if (itemList != null && itemList.size() > 0) {
int nCount = 0;
String[] aBgColor = {"#ccccff" , "#e9e1fd"};
for (int i = 0; i < itemList.size(); i++) {
TransformItem item = (TransformItem) itemList.get(i);
%>
<tr bgcolor='white'>
<td align='right' width='250' bgcolor="<%= aBgColor[nCount%2] %>">&nbsp; 변환항목일련번호 : &nbsp;</td>
<td align='left'>&nbsp;<%=item.getSeqNo()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='250' bgcolor="<%= aBgColor[nCount%2] %>">&nbsp; 변환결과항목경로명 : &nbsp;</td>
<td align='left'>&nbsp;<%=item.getResultItemPath()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='250' bgcolor="<%= aBgColor[nCount%2] %>">&nbsp; 변환명령명 : &nbsp;</td>
<td align='left'>&nbsp;<%=item.getInstruction()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='250' bgcolor="<%= aBgColor[nCount%2] %>">&nbsp; 변환항목기본값 : &nbsp;</td>
<td align='left'>&nbsp;<%=checkNull(item.getDefaultValue())%></td>
</tr>
<%
nCount++;
}
} else {
%>
<tr bgcolor='white'>
<td align='center' colspan="2" >&nbsp; 요청하신 변환규칙 아이템 정보가 없습니다. &nbsp;</td>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>
--%>
@@ -0,0 +1,186 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.transformer.function.FunctionDefinition"%>
<%@ page import="com.eactive.eai.transformer.function.FunctionManager"%>
<%@ page import="com.eactive.eai.transformer.function.ParameterDefinition"%>
<%@ page import="com.eactive.eai.transformer.util.TransformKeys"%>
<%@ page import="java.util.HashMap"%>
<%!
/**
* <pre>
* 문자열을 받아서 널이면 제로스트링을, 아니면 트림된 문자열을 리턴.
* </pre>
* @param String 변환 대상
* @return 'String'
*/
public static String checkNull( String str ) {
String sResult = new String();
if ( str == null ) {
sResult = "";
}
else {
sResult = str.trim();
}
return sResult;
}
%>
<%
FunctionManager manager = FunctionManager.getInstance();
String[] alls = manager.getAllFunctionNames();
String selectedKey = request.getParameter("selectedKey");
if(selectedKey == null && alls.length>=1) {
selectedKey = alls[0];
}
FunctionDefinition vo = null;
ArrayList paramList = new ArrayList();
if(selectedKey!=null) {
vo = manager.getFunctionDefinition(selectedKey);
paramList = (ArrayList) vo.getParameterList();
}
%>
<html>
<head>
<title>
Transform 변환함수 Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function doSearch(){
var searchValue = document.frm.searchTxt.value;
document.frm.selectedKey.value = searchValue;
document.frm.submit();
}
function enterEvent(){
if(window.event.keyCode==13){
doSearch();
}
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>변환함수 관리</b> <br><br>
</p>
<form name="frm" action="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td rowspan=2 align='right' width='350' bgcolor="#ccccff">변환함수명 :&nbsp;&nbsp;</td>
<td align='left'><select name="selectedKey" onchange="doAction();"style="width:98%">
<%
for(int i=0;i<alls.length;i++) {
%>
<option value="<%=alls[i]%>" <%= (alls[i].equals(selectedKey)) ? "selected" : "" %>><%=alls[i]%>
<%
}
%></select>
</td>
<td rowspan=2 align="center"><input type="button" name="search" value="search" onClick="doSearch()" /></td>
</tr>
<tr bgcolor='white'>
<td align='left' ><input type="edit" name="searchTxt" onkeydown="enterEvent()" value="<%=selectedKey%>" style="width:98%" /></td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan='2' width='350' bgcolor="#003366">&nbsp; <font color="yellow"><b>변환함수정보</b> &nbsp;</font></td>
</tr>
<%
if(vo != null ){
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 변환함수명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<%=vo.getName()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 변환함수설명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<%=vo.getDescription()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 변환함수반환유형 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<%=TransformKeys.getType(vo.getReturnTypeId())%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 변환함수클래스명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<%=vo.getFunctionClass()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 변환함수유형 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<%=TransformKeys.getFunctionType(vo.getFunctionTypeId())%></td>
</tr>
<%
} else {
%>
<tr bgcolor='white'>
<td align='center' colspan="2" >&nbsp; 요청하신 변환함수 정보가 없습니다. &nbsp;</td>
</tr>
<%
}
%>
</table>
<br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan='2' width='350' bgcolor="#003366">&nbsp; <font color="yellow"><b>LayoutItem 정보</b> &nbsp;</font></td>
</tr>
<%
if (paramList != null && paramList.size() > 0) {
int nCount = 0;
String[] aBgColor = {"#ccccff", "#e9e1fd"};
for (int i = 0; i < paramList.size(); i++) {
ParameterDefinition param = (ParameterDefinition) paramList.get(i);
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="<%= aBgColor[nCount%2] %>">&nbsp; 변환함수파라미터일련번호 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<%=param.getSeqNo()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="<%= aBgColor[nCount%2] %>">&nbsp; 변환함수파라미터명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<%=param.getName()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="<%= aBgColor[nCount%2] %>">&nbsp; 변환함수파라미터설명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<%=param.getDescription()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="<%= aBgColor[nCount%2] %>">&nbsp; 변환함수파라미터유형 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<%=TransformKeys.getType(param.getTypeId())%></td>
</tr>
<%
nCount++;
}
} else {
%>
<tr bgcolor='white'>
<td align='center' colspan="2" >&nbsp; 요청하신 변환함수 파라메터 정보가 없습니다. &nbsp;</td>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>
+218
View File
@@ -0,0 +1,218 @@
<%--
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.transformer.layout.Layout"%>
<%@ page import="com.eactive.eai.transformer.layout.LayoutItem"%>
<%@ page import="com.eactive.eai.transformer.layout.LayoutManager"%>
<%@ page import="com.eactive.eai.transformer.util.TransformKeys"%>
<%@ page import="java.util.HashMap"%>
<%@ taglib uri="netui-tags-databinding.tld" prefix="netui-compat-data"%>
<%@ taglib uri="netui-tags-html.tld" prefix="netui-compat"%>
<%@ taglib uri="netui-tags-template.tld" prefix="netui-compat-template"%>
<%!
/**
* <pre>
* 문자열을 받아서 널이면 제로스트링을, 아니면 트림된 문자열을 리턴.
* </pre>
* @param String 변환 대상
* @return 'String'
*/
public static String checkNull( String str ) {
String sResult = new String();
if ( str == null ) {
sResult = "";
}
else {
sResult = str.trim();
}
return sResult;
}
StringBuffer html = new StringBuffer();
private void makeItem(LayoutItem item)
{
makeHTML(item);
try{
if (!item.isField() && (item.getChildCount() != 0)) {
for (int i = 0; i < item.getChildCount(); i++) {
if (item.getChild(i).getIndex() == -1) {
makeItem(item.getChild(i));
}
}
}
}catch (Exception e) {
e.printStackTrace();
System.out.println("LayoutEdit.jsp error");
}
}
private void makeHTML(LayoutItem item) {
if(item.isMessage())
html.append("<TR align=\'center' height=25 bgcolor='#e9e1fd' onmouseover=this.style.background='#F6F6F6' onmouseout=this.style.background='#e9e1fd'>");
else if (item.isGroup())
html.append("<TR align=\'center' height=25 bgcolor='#cbf1f8' onClick=\"javascript:goto('"+checkNull(item.getLayoutName())+"', '"+checkNull(item.getName())+"');\" onmouseover=this.style.background='#F6F6F6' onmouseout=this.style.background='#cbf1f8'>");
else
html.append("<TR align=\'center' height=25 bgcolor='#ffffff' onClick=\"javascript:goto('"+checkNull(item.getLayoutName())+"', '"+checkNull(item.getName())+"');\" onmouseover=this.style.background='#F6F6F6' onmouseout=this.style.background='#FFFFFF'>");
html.append(" <TD class='txt' align=\'center'>"+item.getSeqNo()+"</td>");
html.append(" <td class='txt' align='left' style=\"PADDING-LEFT: 10px\">&nbsp;"+checkNull(item.getName())+"</td>");
html.append(" <td class='txt' style=\"PADDING-LEFT: 10px\">"+TransformKeys.getLoutItemNodePtrnID(item.getNodeTypeId())+"</td>");
html.append(" <td class='txt' style=\"PADDING-LEFT: 10px\">"+TransformKeys.getType(item.getItemTypeId())+"</td>");
html.append(" <td class='txt' style=\"PADDING-LEFT: 10px\">"+checkNull(item.getRefInfo())+"</td> ");
html.append(" <td class='txt' align=\'center' style=\"PADDING-LEFT: 10px\">"+checkNull(item.getOccType())+"</td>");
html.append(" <td class='txt' align=\'center' style=\"PADDING-LEFT: 10px\">"+item.getOccMax()+"</td>");
html.append(" <td class='txt' align=\'center' style=\"PADDING-LEFT: 10px\">"+item.getOccMin()+"</td>");
html.append(" </TR> ");
}
%>
<%
LayoutManager manager = LayoutManager.getManager();
String key[] = manager.getAllLayoutName();
String selected = request.getParameter("layoutNames");
if(selected == null && key.length>=1) {
selected = key[0];
}
Layout layout = null;
if(selected!=null) {
layout = manager.getLayoutByName(selected);
}
LayoutItem root = null;
if (layout != null)
root = layout.getRootItem();
String str = "";
if (root != null ){
makeItem(root);
str = html.toString();
html = new StringBuffer();
}
%>
<html>
<head>
<title>
Transform Layout Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function goto(layoutName, itemName) {
var one = document.frm;
one.layoutName.value = layoutName;
one.itemName.value = itemName;
one.action = "<%=request.getContextPath()%>/mgr/transformer/layoutItem.jsp";
one.submit();
//var url = 'layoutItem.jsp?layoutName='+layoutName+'&itemName='+itemName;
//msgWindow=window.open(url);
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>Transform Layout Configuration</b> <br><br>
</p>
<form name="frm" action="">
<input type=hidden name="layoutName" value="">
<input type=hidden name="itemName" value="">
<table border='0' width="800" >
<tr>
<td align='left'>
<table width="450" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' width='180' bgcolor="#ccccff"><label value="레이아웃명 : "/>&nbsp;</td>
<td align='left'>&nbsp;<select name="layoutNames" onchange="doAction();">
<%
for(int i=0;i<key.length;i++) {
%>
<option value="<%=key[i]%>" <%= (key[i].equals(selected)) ? "selected" : "" %>><%=key[i]%>
<%
}
%></select>
</td>
</tr>
</table>
</td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan='2' width='350' bgcolor="#003366">&nbsp; <font color="yellow"><b>Layout정보</b> &nbsp;</font></td>
</tr>
<%
if(layout != null ){
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃명 : &nbsp;</td>
<td align='left'>&nbsp;<%=layout.getName()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃유형명 : &nbsp;</td>
<td align='left'>&nbsp;<%=layout.getLayoutType().getName()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃설명 : &nbsp;</td>
<td align='left'>&nbsp;<%=layout.getDescription()%></td>
</tr>
<%
} else {
%>
<tr bgcolor='white'>
<td align='center' colspan="2" >&nbsp; 요청하신 Layout 정보가 없습니다. &nbsp;</td>
</tr>
<%
}
%>
</table>
<br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align="center" bgcolor="#ccccff">일련번호</td>
<td align="center" bgcolor="#ccccff">레이아웃항목명</td>
<td align="center" bgcolor="#ccccff">노드타입</td>
<td align="center" bgcolor="#ccccff">항목유형</td>
<td align="center" bgcolor="#ccccff">참조정보</td>
<td align="center" bgcolor="#ccccff">발생유형</td>
<td align="center" bgcolor="#ccccff">최대발생</td>
<td align="center" bgcolor="#ccccff">최소발생</td>
</tr>
<tr bgcolor='white'>
<td align='right' colspan='8' width='350' bgcolor="#003366">
&nbsp;
<font color="yellow"><b>LayoutItem 정보</b> &nbsp;</font></td>
</tr>
<%=str%>
</table>
</form>
</body>
</html>
--%>
+211
View File
@@ -0,0 +1,211 @@
<%--
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.transformer.layout.Layout"%>
<%@ page import="com.eactive.eai.transformer.layout.LayoutItem"%>
<%@ page import="com.eactive.eai.transformer.layout.LayoutManager"%>
<%@ page import="com.eactive.eai.transformer.util.TransformKeys"%>
<%@ page import="java.util.HashMap"%>
<%@ taglib uri="netui-tags-databinding.tld" prefix="netui-compat-data"%>
<%@ taglib uri="netui-tags-html.tld" prefix="netui-compat"%>
<%@ taglib uri="netui-tags-template.tld" prefix="netui-compat-template"%>
<%!
/**
* <pre>
* 문자열을 받아서 널이면 제로스트링을, 아니면 트림된 문자열을 리턴.
* </pre>
* @param String 변환 대상
* @return 'String'
*/
public static String checkNull( String str ) {
String sResult = new String();
if ( str == null ) {
sResult = "";
}
else {
sResult = str.trim();
}
return sResult;
}
%>
<%
String layoutName = (String)request.getParameter("layoutName");
String itemName = (String)request.getParameter("itemName");
LayoutManager manager = LayoutManager.getManager();
Layout layout = manager.getLayoutByName(layoutName);
LayoutItem item = null;
if(layout != null ) {
layout.updateItemNameMap();
item = layout.getItemByPath(itemName);
} else {
System.out.println("layoutItem.jsp ] layout is null - " +layoutName);
}
if(item == null ) {
System.out.println("layoutItem.jsp ] layoutItem is null - " +itemName);
}
%>
<html>
<head>
<title>
Transform LayoutItem Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function goto(name) {
var one = document.frm;
one.layoutNames.value = name;
one.action = "<%=request.getContextPath()%>/mgr/transformer/layout.jsp";
one.submit();
//var url = 'layout.jsp?layoutName='+name;
//msgWindow=window.open(url);
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>Transform LayoutItem Configuration</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="layoutNames" value="">
<table border='0' width="800" >
<tr>
<td align='right'>
<input name="back Layout" value="back Layout" type="button" onclick="javascript:goto('<%=layoutName%>');">
</td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan='2' width='350' bgcolor="#003366">&nbsp; <font color="yellow"><b>Layout정보</b> &nbsp;</font></td>
</tr>
<%
if(layout != null ){
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃명 : &nbsp;</td>
<td align='left'>&nbsp;<%=layout.getName()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃유형명 : &nbsp;</td>
<td align='left'>&nbsp;<%=layout.getLayoutType().getName()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃설명 : &nbsp;</td>
<td align='left'>&nbsp;<%=layout.getDescription()%></td>
</tr>
<%
} else {
%>
<tr bgcolor='white'>
<td align='center' colspan="2" >&nbsp; 요청하신 Layout 정보가 없습니다. &nbsp;</td>
</tr>
<%
}
%>
</table>
<br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan='2' width='350' bgcolor="#003366">&nbsp; <font color="yellow"><b>LayoutItem 정보</b> &nbsp;</font></td>
</tr>
<%
if (item != null ) {
%>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃항목일련번호 : &nbsp;</td>
<td align='left'>&nbsp;<%=item.getSeqNo()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃항목명 : &nbsp;</td>
<td align='left'>&nbsp;<%=item.getName()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 부모레이아웃항목 : &nbsp;</td>
<td align='left'>&nbsp;<%=item.getParent().getName()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃항목설명 : &nbsp;</td>
<td align='left'>&nbsp;<%=item.getDescription()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃항목노드유형 : &nbsp;</td>
<td align='left'>&nbsp;<%=TransformKeys.getLoutItemNodePtrnID(item.getNodeTypeId())%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃항목유형명 : &nbsp;</td>
<td align='left'>&nbsp;<%=TransformKeys.getType(item.getItemTypeId())%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃항목경로명 : &nbsp;</td>
<td align='left'>&nbsp;<%=item.getPath()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃항목길이수 : &nbsp;</td>
<td align='left'>&nbsp;<%=item.getLength()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃항목참조정보 : &nbsp;</td>
<td align='left'>&nbsp;<%=item.getRefInfo()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃항목참조정보2 : &nbsp;</td>
<td align='left'>&nbsp;<%=item.getRefOcc()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃항목발생유형구분코드 : &nbsp;</td>
<td align='left'>&nbsp;<%=item.getOccType()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃항목최대발생건수 : &nbsp;</td>
<td align='left'>&nbsp;<%=item.getOccMax()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃항목최소발생건수 : &nbsp;</td>
<td align='left'>&nbsp;<%=item.getOccMin()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃항목기본값 : &nbsp;</td>
<td align='left'>&nbsp;<%=item.getDefaultValue()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='350' bgcolor="#ccccff">&nbsp; 레이아웃항목마스킹여부 : &nbsp;</td>
<td align='left'>&nbsp;<%=item.getMask()%></td>
</tr>
<%
} else {
%>
<tr bgcolor='white'>
<td align='center' colspan="2" >&nbsp; 요청하신 LayoutItem 정보가 없습니다. &nbsp;</td>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>
--%>
+149
View File
@@ -0,0 +1,149 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.transformer.layout.LayoutType"%>
<%@ page import="com.eactive.eai.transformer.layout.LayoutTypeManager"%>
<%@ page import="com.eactive.eai.transformer.util.TransformKeys"%>
<%@ page import="java.util.HashMap"%>
<%!
/**
* <pre>
* 문자열을 받아서 널이면 제로스트링을, 아니면 트림된 문자열을 리턴.
* </pre>
* @param String 변환 대상
* @return 'String'
*/
public static String checkNull( String str ) {
String sResult = new String();
if ( str == null ) {
sResult = "";
}
else {
sResult = str.trim();
}
return sResult;
}
%>
<%
LayoutTypeManager manager = LayoutTypeManager.getInstance();
String [] alls = manager.getAllLayoutTypeName();
String action = request.getParameter("actionType");
String selectedKey = request.getParameter("selectedKey");
if(selectedKey == null && alls.length>=1) {
selectedKey = alls[0];
}
if ("reload".equals(action)){
manager.reload(selectedKey);
}else if ("reloadAll".equals(action)){
manager.reload();
}else {
;
}
LayoutType vo = null;
if(selectedKey!=null) {
vo = manager.getLayoutType(selectedKey);
}
%>
<html>
<head>
<title>
Transform LayoutType Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
function managerReload(){
document.frm.actionType.value="reload";
document.frm.submit();
}
function managerReloadAll(){
document.frm.actionType.value="reloadAll";
document.frm.submit();
}
function doSearch(){
var searchValue = document.frm.searchTxt.value;
document.frm.selectedKey.value = searchValue;
document.frm.submit();
}
function enterEvent(){
if(window.event.keyCode==13){
doSearch();
}
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>레이아웃 유형 관리</b> <br><br>
</p>
<form name="frm" action="">
<input type="hidden" name="actionType" value="">
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td rowspan=2 align='right' width='250' bgcolor="#ccccff">레이아웃유형명 :&nbsp;&nbsp;</td>
<td align='left'>&nbsp;<select name="selectedKey" onchange="doAction();"style="width:98%">
<%
for(int i=0;i<alls.length;i++) {
%>
<option value="<%=alls[i]%>" <%= (alls[i].equals(selectedKey)) ? "selected" : "" %>><%=alls[i]%>
<%
}
%></select>
</td>
<td width='50'><input type="button" name="reload" value="reload" onClick="managerReload()" /></td>
<td width='70'><input type="button" name="reloadAll" value="reloadAll" onClick="managerReloadAll()" /></td>
</tr>
<tr bgcolor='white'>
<td align='left' >&nbsp;<input type="edit" style="width:98%;" name="searchTxt" onkeydown="enterEvent()" value="<%=selectedKey%>" style="width:98%" /></td>
<td colspan=2 align="center"><input type="button" name="search" value="search" onClick="doSearch()" /></td>
</tr>
</table><br>
<table width="800" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<tr bgcolor='white'>
<td align='right' colspan='2' width='250' bgcolor="#003366">&nbsp; <font color="yellow"><b>LayoutType정보</b> &nbsp;</font></td>
</tr>
<%
if(vo != null ){
%>
<tr bgcolor='white'>
<td align='right' width='250' bgcolor="#ccccff">&nbsp; 레이아웃유형명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<%=vo.getName()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='250' bgcolor="#ccccff">&nbsp; 레이아웃유형설명 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<%=vo.getDescription()%></td>
</tr>
<tr bgcolor='white'>
<td align='right' width='250' bgcolor="#ccccff">&nbsp; 메시지레이아웃생성클래스 : &nbsp;</td>
<td align='left' style="height:40px;">&nbsp;<%=vo.getGenClass()%></td>
</tr>
<%
} else {
%>
<tr bgcolor='white'>
<td align='center' colspan="2" >&nbsp; 요청하신 LayoutType 정보가 없습니다. &nbsp;</td>
</tr>
<%
}
%>
</table>
</form>
</body>
</html>
+77
View File
@@ -0,0 +1,77 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%@ page import="com.eactive.eai.common.useDate.UseDateControlManager"%>
<%@ page import="com.eactive.eai.common.useDate.UseDateControlVO"%>
<%
UseDateControlManager manager = UseDateControlManager.getInstance();
String[] names = manager.getAllKeys();
String selectedName = request.getParameter("name");
if(selectedName == null && names.length>0) selectedName = names[0];
UseDateControlVO vo = manager.get(selectedName);
%>
<html>
<head>
<title>
Use Date Control Manager
</title>
<script>
function doAction() {
document.frm.submit();
}
</script>
</head>
<body>
<p style="font-size:12pt;">
<b>Use Date Control Configuration</b> <br><br>
</p>
<form name="frm" action="">
<table width="450" border=0 bgcolor='black' cellpadding="1" cellspacing="1">
<%
if(selectedName!=null) {
%>
<tr bgcolor='white'>
<td align='right' width='200' bgcolor="#ccccff">인터페이스명 : &nbsp;</td>
<td align='left' width='250'>&nbsp;<select name="name" onchange="doAction();">
<%
for(int i=0;i<names.length;i++) {
%>
<option value="<%=names[i]%>" <%=(names[i].equals(selectedName)) ? "selected" : ""%>><%=names[i]%>
<%
}
%></select>
</td>
</tr>
<%
if (vo != null){
%>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">인터페이스명 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="text" size="20" value="<%=vo.getName()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">시작일자 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="text" size="20" value="<%=vo.getStartDateString()%>"></td>
</tr>
<tr bgcolor='white'>
<td align='right' bgcolor="#ccccff">종료일자 : &nbsp;</td>
<td align='left'>&nbsp;<input type="text" name="text" size="20" value="<%=vo.getEndDateString()%>"></td>
</tr>
<%
}
%>
<% } else { %>
<% } %>
</table>
<table border='0' width="800" >
<tr>
<td align='left'>
<!-- input type="submit" value="UPDATE"-->
</td>
</tr>
</table><br>
</form>
</body>
</html>
+115
View File
@@ -0,0 +1,115 @@
<%@ page import="java.io.*, java.util.*"%>
<%@ page language="java" contentType="text/html;charset=utf-8"%>
<%!
private ThreadGroup getRootThreadGroup() {
ThreadGroup group = Thread.currentThread().getThreadGroup();
ThreadGroup parent = null;
while(true) {
parent = group.getParent();
if(parent==null) return group;
group = parent;
}
}
private ThreadGroup findThreadGroup(ThreadGroup parent, String path) {
if(path.startsWith("/")) {
path = path.substring(1);
}
return null;
}
%>
<%
String threadGroupName = request.getParameter("ThreadGroupName");
ThreadGroup root = getRootThreadGroup();
if(threadGroupName==null) threadGroupName=root.getName();
ThreadGroup[] children = new ThreadGroup[root.activeGroupCount()];
root.enumerate(children, true);
ThreadGroup current = null;
for(int i=0;i<children.length;i++) {
if(threadGroupName.equals(children[i].getName())) {
current = children[i];
break;
}
}
if(current==null) current = root;
Thread[] threads = new Thread[current.activeCount()];
current.enumerate(threads, false);
%>
<html>
<head>
<title>
CurrentThread List
</title>
</head>
<body>
<p>
쓰레드 전체 리스트 보기
</p>
<table border='0' width='800'>
<tr>
<td>
Thread Group List (총: <%=children.length%>개)
<table border=0 cellspacing="1" cellpadding="1" bgcolor="black" width='800'>
<tr bgcolor='yellow'>
<td align='center' width='50'>No</td><td align='center'>ThreadGroup Name</td>
</tr>
<tr bgcolor='white'>
<td align='center'>root</td>
<td>&nbsp;<a href="viewThreadList.jsp"><%=root%></a></td>
</tr>
<%
for(int i=0;i<children.length;i++) {
%>
<tr bgcolor='white'>
<td align='center'><%=(i+1)%></td>
<td>&nbsp;<a href="viewThreadList.jsp?ThreadGroupName=<%=children[i].getName()%>"><%=children[i].getName()%></a></td>
</tr>
<%
}
%>
</table>
</td>
</tr>
<tr>
<td>
<br>
Thread List [<%=current.getName()%>] (총: <%=threads.length%>개)
<table border=0 cellspacing="1" cellpadding="1" bgcolor="black" width='800'>
<tr bgcolor='yellow'>
<td align='center' width='50'>No</td><td align='center'>Thread Name</td>
<td align='center'>isAlive</td>
<td align='center'>isDaemon</td>
<td align='center'>isInterrupted</td>
<td align='center'>activeCount</td>
</tr>
<%
for(int i=0;i<threads.length;i++) {
if(threads[i]==null) continue;
%>
<tr bgcolor='white'>
<td align='center'><%=(i+1)%></td>
<td>&nbsp;<%=threads[i].getName()%></td>
<td>&nbsp;<%=threads[i].isAlive()%></td>
<td>&nbsp;<%=threads[i].isDaemon()%></td>
<td>&nbsp;<%=threads[i].isInterrupted()%></td>
<td>&nbsp;<%=threads[i].activeCount()%></td>
</tr>
<%
}
%>
</table>
</td>
</tr>
</table>
</body>
</html>
@@ -104,7 +104,7 @@ public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdap
tokenType = vo.getProperty(PROP_TOKEN_TYPE, "JWT");
}
endpoints.pathMapping("/oauth/token", "/api/v1/oauth/token");
// endpoints.pathMapping("/oauth/token", "/auth/oauth/v2/token") ;
endpoints.authenticationManager(authenticationManager);
endpoints.userDetailsService(userDetailsService);
@@ -1,5 +1,6 @@
package com.eactive.eai.authserver.config;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
@@ -24,6 +25,7 @@ public class OAuthRequestLoggingFilter extends OncePerRequestFilter {
data.setGrantType(request.getParameter("grant_type"));
data.setScope(request.getParameter("scope"));
data.setUsername(request.getParameter("username"));
data.setResource(request.getParameter("resource"));
RequestContextData.ThreadLocalRequestContext.set(data);
@@ -9,6 +9,7 @@ public class RequestContextData {
private String grantType;
private String scope;
private String username;
private String resource;
// Getters and setters
@@ -0,0 +1,125 @@
package com.eactive.eai.authserver.custom;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import org.json.simple.JSONObject;
import org.springframework.http.ResponseEntity;
import org.springframework.security.oauth2.provider.ClientDetails;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.eactive.eai.adapter.http.dynamic.filter.JwtAuthException;
import com.eactive.eai.authserver.service.OAuth2Manager;
import com.eactive.eai.common.util.Logger;
@RestController
@RequestMapping("/auth/oauth/v2")
public class BearerTokenContoller {
public static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
private final BearerTokenService tokenService;
public BearerTokenContoller(BearerTokenService tokenService) {
this.tokenService = tokenService;
}
// 기본 CA Bearer Token 발급
@PostMapping("/token")
public ResponseEntity<?> issueCAToken(@RequestParam MultiValueMap<String, String> req) throws JwtAuthException {
JSONObject resObject = new JSONObject();
try {
String clientId = req.getFirst("client_id"); // .get("client_id");
String grantType = req.getFirst("grant_type");
if (!StringUtils.equals(grantType, "client_credentials") ) {
throw new JwtAuthException("unsupported_grant_type", "Unsupported grant type");
}
ClientDetails clientDetails = OAuth2Manager.getInstance().getClientDeatilsStore().get(clientId);
if (clientDetails == null) {
throw new JwtAuthException("invalid_client", "Bad client credentials(not found)");
}
String tokenType = "Bearer";
String clientSecret = req.getFirst("client_secret");
String scopes = req.getFirst("scope");
Long expiresIn = Long.valueOf(clientDetails.getAccessTokenValiditySeconds());
String[] reqScopeArr = org.springframework.util.StringUtils.tokenizeToStringArray(scopes, " ");
Set<String> scopeSet = new HashSet<String>();
for (String scope : reqScopeArr) {
scopeSet.add(scope);
}
veryfyClient(clientDetails, clientSecret, scopeSet);
String token = tokenService.generateCAToken(clientId, expiresIn, scopeSet);
Map<String, Object> tokenMap = new HashMap<>();
tokenMap.put("token_type", tokenType);
tokenMap.put("access_token", token);
tokenMap.put("expires_in", expiresIn);
tokenMap.put("scope", scopes);
// ... and so on for all key-value pairs
resObject.putAll(tokenMap);
return ResponseEntity.ok(resObject);
} catch (JwtAuthException e) {
logger.error(e);
JSONObject errorJson = new JSONObject();
errorJson.put("error", e.getCode());
errorJson.put("error_description", e.getMessage());
resObject.putAll(errorJson);
return ResponseEntity.status(401).body(resObject);
} catch (Exception e) {
logger.error(e);
JSONObject errorJson = new JSONObject();
errorJson.put("error", "invalid_request");
errorJson.put("error_description", e.getMessage());
resObject.putAll(errorJson);
return ResponseEntity.status(500).body(resObject);
}
}
// // 서비스용 Bearer Token 발급
// @PostMapping("/service")
// public ResponseEntity<?> issueFileToken(@RequestBody Map<String, String> req) {
// String fileId = req.get("fileid");
//
// String token = tokenService.generateFileToken(fileId);
//
// Map<String, String> tokenMap = new HashMap<>();
// tokenMap.put("token_type", "Bearer");
// tokenMap.put("file_token", token);
// tokenMap.put("expires_in", "599");
// tokenMap.put("expires_on", "1575593514");
// tokenMap.put("resource", fileId);
//
// return ResponseEntity.ok(tokenMap);
// }
private void veryfyClient(ClientDetails clientDetails, String clientSecret, Set<String> scopeSet) throws JwtAuthException {
if (!StringUtils.equals(clientDetails.getClientSecret(), clientSecret)) {
throw new JwtAuthException("invalid_client", "Bad client credentials(client_secret is empty or not match)");
}
if (scopeSet.isEmpty()) {
throw new JwtAuthException("invalid_client", "Bad client credentials(Scope is empty)");
}
if (!clientDetails.getScope().containsAll(scopeSet)) {
throw new JwtAuthException("invalid_client", "Bad client credentials(Include unacceptable scope)");
}
}
}
@@ -0,0 +1,85 @@
package com.eactive.eai.authserver.custom;
import java.io.IOException;
import java.util.Arrays;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.simple.JSONObject;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import com.eactive.eai.adapter.http.dynamic.filter.JwtAuthException;
import com.eactive.eai.common.util.Logger;
@Component
public class BearerTokenFilter extends OncePerRequestFilter{
public static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
private final BearerTokenService tokenService;
public static final String ERROR_AUTHENTICATION_FAIL = "E.AUTHENTICATION_FAIL";
public static final String ERROR_AUTHORIZATION_FAIL = "E.AUTHORIZATION_FAIL";
public static final String ERROR_TOKEN_EXPIRED = "E.TOKEN_EXPIRED";
public BearerTokenFilter(BearerTokenService tokenService) {
this.tokenService = tokenService;
}
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
JSONObject resObject = new JSONObject();
try {
String auth = request.getHeader("Authorization");
if (auth != null && auth.startsWith("Bearer ")) {
String token = auth.substring(7);
String clientId = null;
String fileId = null;
if (tokenService.validateCA(token)) {
clientId = tokenService.getClientIdFromCA(token);
} else {
throw new JwtAuthException(ERROR_AUTHENTICATION_FAIL, "Access token is invalid or expired");
}
// if (fileId != null) {
// UsernamePasswordAuthenticationToken authentication =
// new UsernamePasswordAuthenticationToken(fileId, null, Arrays.asList());
// SecurityContextHolder.getContext().setAuthentication(authentication);
// }
}
filterChain.doFilter(request, response);
} catch (JwtAuthException jae) {
logger.debug(jae.getMessage());
JSONObject errorJson = new JSONObject();
errorJson.put("error", jae.getCode());
errorJson.put("error_description", jae.getMessage());
resObject.putAll(errorJson);
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); // 401 설정
response.setContentType("application/json;charset=UTF-8");
response.getWriter().write(resObject.toJSONString());
} catch (Exception e) {
logger.error(e.getMessage());
JSONObject errorJson = new JSONObject();
errorJson.put("error", "invalid_request");
errorJson.put("error_description", e.getMessage());
resObject.putAll(errorJson);
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); // 500 설정
response.setContentType("application/json;charset=UTF-8");
response.getWriter().write(resObject.toJSONString());
}
}
}
@@ -0,0 +1,49 @@
package com.eactive.eai.authserver.custom;
import java.util.Set;
import com.fasterxml.jackson.annotation.JsonProperty;
public class BearerTokenInfo {
@JsonProperty("client_id")
private String clientId;
private Long expiresIn;
private Long expiresAt;
private Set<String> scopeSet;
public String getClientId() {
return clientId;
}
public void setClientId(String clientId) {
this.clientId = clientId;
}
public Long getExpiresIn() {
return expiresIn;
}
public void setExpiresIn(Long expiresIn) {
this.expiresIn = expiresIn;
}
public Long getExpiresAt() {
return expiresAt;
}
public void setExpiresAt(Long expiresIn) {
this.expiresAt = System.currentTimeMillis() + (expiresIn * 1000);
}
public Set<String> getScopeSet() {
return scopeSet;
}
public void setScopeSet(Set<String> scopeSet) {
this.scopeSet = scopeSet;
}
public boolean isExpired() {
return System.currentTimeMillis() > expiresAt;
}
}
@@ -0,0 +1,97 @@
package com.eactive.eai.authserver.custom;
import java.security.SecureRandom;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import org.springframework.stereotype.Service;
@Service
public class BearerTokenService {
// CA 토큰 저장소
private final Map<String, BearerTokenInfo> CATokenStore = new ConcurrentHashMap<>();
// File 토큰 저장소
private final Map<String, String> fileTokenStore = new ConcurrentHashMap<>();
// // FileTransfer 토큰 저장소
// private final Map<String, String> fileTransferTokenStore = new ConcurrentHashMap<>();
public String generateCAToken(String clientId, Long expiresIn, Set<String> scopeSet) {
String token = UUID.randomUUID().toString();
BearerTokenInfo CATokenInfo = new BearerTokenInfo();
CATokenInfo.setClientId(clientId);
CATokenInfo.setExpiresIn(expiresIn);
CATokenInfo.setExpiresAt(expiresIn);
CATokenInfo.setScopeSet(scopeSet);
CATokenStore.put(token, CATokenInfo);
return token;
}
public String generateFileToken(String fileId) {
//String token = UUID.randomUUID().toString().replace("-", "");
String token = generateTokenString(987);
fileTokenStore.put(token, fileId);
return token;
}
// public String generateFileTransferToken(String fileId) {
// //String token = UUID.randomUUID().toString().replace("-", "");
// String token = generateTokenString(654);
// fileTransferTokenStore.put(token, fileId);
// return token;
// }
public boolean validateCA(String token) {
BearerTokenInfo CATokenInfo = CATokenStore.get(token);
if (CATokenInfo == null) return false;
if (CATokenInfo.isExpired()) {
CATokenStore.remove(token);
return false;
}
return CATokenStore.containsKey(token);
}
public boolean validateFile(String token) {
return fileTokenStore.containsKey(token);
}
// public boolean validateFileTransfer(String token) {
// return fileTransferTokenStore.containsKey(token);
// }
public String getClientIdFromCA(String token) {
BearerTokenInfo CATokenInfo = CATokenStore.get(token);
return CATokenInfo.getClientId();
}
public String getFileIdFromFile(String token) {
return fileTokenStore.get(token);
}
// public String getFileIdFromFileTransfer(String token) {
// return fileTransferTokenStore.get(token);
// }
private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
private static final SecureRandom secureRandom = new SecureRandom();
public static String generateTokenString(int length) {
// Java 8의 IntStream과 Collectors.joining을 사용한 효율적인 방법
return IntStream.range(0, length)
.map(i -> secureRandom.nextInt(CHARACTERS.length()))
.mapToObj(CHARACTERS::charAt)
.map(String::valueOf)
.collect(Collectors.joining());
}
}
@@ -0,0 +1,63 @@
package com.eactive.eai.authserver.custom;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonProperty;
@SuppressWarnings("serial")
public class KjbMGOAuth2AccessTokenRequest implements Serializable {
@JsonProperty("grant_type")
private String grantType;
@JsonProperty("client_id")
private String clientId;
@JsonProperty("client_secret")
private String clientSecret;
private String resource;
private String scope;
public String getGrantType() {
return grantType;
}
public void setGrantType(String grantType) {
this.grantType = grantType;
}
public String getClientId() {
return clientId;
}
public void setClientId(String clientId) {
this.clientId = clientId;
}
public String getClientSecret() {
return clientSecret;
}
public void setClientSecret(String clientSecret) {
this.clientSecret = clientSecret;
}
public String getResource() {
return resource;
}
public void setResource(String resource) {
this.resource = resource;
}
public String getScope() {
return scope;
}
public void setScope(String scope) {
this.scope = scope;
}
@Override
public String toString() {
return "KjbMGOAuth2AccessTokenRequest [grantType=" + grantType + ", clientId=" + clientId + ", clientSecret="
+ clientSecret + ", resource=" + resource + ", scope=" + scope + "]";
}
}
@@ -0,0 +1,105 @@
package com.eactive.eai.authserver.custom;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
@SuppressWarnings("serial")
@JsonInclude(Include.NON_NULL)
public class KjbMGOAuth2AccessTokenResponse implements Serializable {
private String responseCode;
private String responseMessage;
@JsonProperty("access_token")
private String accessToken;
@JsonProperty("refresh_token")
private String refreshToken;
@JsonProperty("token_type")
private String tokenType;
@JsonProperty("expires_in")
private Long expiresIn;
@JsonProperty("expires_on")
private Long expiresOn;
private String resource;
private String scope;
public String getResponseCode() {
return responseCode;
}
public void setResponseCode(String responseCode) {
this.responseCode = responseCode;
}
public String getResponseMessage() {
return responseMessage;
}
public void setResponseMessage(String responseMessage) {
this.responseMessage = responseMessage;
}
public String getAccessToken() {
return accessToken;
}
public void setAccessToken(String accessToken) {
this.accessToken = accessToken;
}
public String getrefreshToken() {
return refreshToken;
}
public void setrefreshToken(String refreshToken) {
this.refreshToken = refreshToken;
}
public String getTokenType() {
return tokenType;
}
public void setTokenType(String tokenType) {
this.tokenType = tokenType;
}
public Long getExpiresIn() {
return expiresIn;
}
public void setExpiresIn(Long expiresIn) {
this.expiresIn = expiresIn;
}
public Long getExpiresOn() {
return expiresOn;
}
public void setExpiresOn(Long expiresOn) {
this.expiresOn = expiresOn;
}
public String getResource() {
return resource;
}
public void setResource(String resource) {
this.resource = resource;
}
public String getScope() {
return scope;
}
public void setScope(String scope) {
this.scope = scope;
}
@Override
public String toString() {
return "KjbMGOAuth2AccessTokenResponse [responseCode=" + responseCode + ", responseMessage=" + responseMessage
+ ", accessToken=" + accessToken + ", tokenType=" + tokenType + ", expiresIn=" + expiresIn
+ ", refreshToken=" + refreshToken+ ", expiresOn=" + expiresOn+ ", resource=" + resource+ ", scope=" + scope + "]";
}
}
@@ -0,0 +1,288 @@
package com.eactive.eai.authserver.custom;
import java.nio.charset.StandardCharsets;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.Principal;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.Signature;
import java.security.spec.X509EncodedKeySpec;
import java.time.LocalDateTime;
import java.util.Base64;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
import javax.crypto.Cipher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.common.util.OAuth2Utils;
import org.springframework.security.oauth2.provider.ClientDetails;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.security.oauth2.provider.OAuth2Request;
import org.springframework.security.oauth2.provider.endpoint.TokenEndpoint;
import org.springframework.security.oauth2.provider.token.TokenEnhancer;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.eactive.eai.adapter.http.dynamic.filter.JwtAuthException;
import com.eactive.eai.authserver.config.IssueLimitOAuth2Exception;
import com.eactive.eai.authserver.config.AuthorizationServerConfig;
import com.eactive.eai.authserver.config.RequestContextData;
import com.eactive.eai.authserver.dao.TokenIssuanceLogDAO;
import com.eactive.eai.authserver.service.OAuth2Manager;
import com.eactive.eai.authserver.util.BeanUtils;
import com.eactive.eai.authserver.vo.ClientVO;
import com.eactive.eai.common.dao.DAOException;
import com.eactive.eai.common.logger.EAIDBLogControl;
import com.eactive.eai.common.util.Logger;
import com.eactive.eai.common.util.UUID;
import com.eactive.eai.data.entity.onl.authserver.TokenIssuanceLog;
@Controller
public class KjbMGOAuth2Controller {
public static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
private static final String HEADER_TRACEID = "traceId";
private static final String SERVICE_CODE_ACCESS_TOKEN = "00"; // 임시설정
@Autowired
private TokenIssuanceLogDAO tokenIssuanceLogDAO;
@RequestMapping(value = "/mapi/oauth2/token2", method = RequestMethod.POST, produces = "application/json; charset=\"UTF-8\"")
@ResponseBody
public KjbMGOAuth2AccessTokenResponse token(@RequestBody KjbMGOAuth2AccessTokenRequest tokenRequest,
HttpServletRequest request, HttpServletResponse response) {
if (logger.isDebug()) {
logger.debug(tokenRequest.toString());
}
KjbMGOAuth2AccessTokenResponse responseToken = new KjbMGOAuth2AccessTokenResponse();
try {
if (!StringUtils.equals(tokenRequest.getGrantType(), "client_credentials")) {
throw new JwtAuthException(
String.format("%d%s%s", HttpStatus.BAD_REQUEST.value(), SERVICE_CODE_ACCESS_TOKEN, "02"),
"Invalid Mandatory Field {grantType}");
}
String grantType = tokenRequest.getGrantType();
String clientId = tokenRequest.getClientId();
String clientSecret = tokenRequest.getClientSecret();
String[] scopeArr = org.springframework.util.StringUtils.tokenizeToStringArray(tokenRequest.getScope(), " ");
Set<String> scopeSet = new HashSet<String>();
for (String scope : scopeArr) {
scopeSet.add(scope);
}
String[] resourceArr = org.springframework.util.StringUtils.tokenizeToStringArray(tokenRequest.getResource(), ",");
Set<String> resourceSet = new HashSet<String>();
for (String resource : resourceArr) {
resourceSet.add(resource);
}
ClientDetails clientDetails = OAuth2Manager.getInstance().getClientDeatilsStore().get(clientId);
verifyClient(clientDetails, clientId, scopeSet);
String traceId = UUID.randomUUID().toString().replace("-", "");
response.setHeader(HEADER_TRACEID, traceId);
HashMap<String, String> authorizationParameters = new HashMap<String, String>();
authorizationParameters.put(OAuth2Utils.GRANT_TYPE, grantType);
authorizationParameters.put(OAuth2Utils.CLIENT_ID, clientId);
authorizationParameters.put("client_secret", clientSecret);
Set<String> responseType = new HashSet<String>();
responseType.add(tokenRequest.getGrantType());
OAuth2Request authorizationRequest = new OAuth2Request(authorizationParameters, clientId, null, true, scopeSet,
resourceSet, "", responseType, null);
Principal principal = new OAuth2Authentication(authorizationRequest, null);
ResponseEntity<OAuth2AccessToken> result = tokenEndpoint().postAccessToken(principal,
authorizationParameters);
OAuth2AccessToken token = result.getBody();
if(StringUtils.isNotBlank(token.getTokenType()) && StringUtils.equalsIgnoreCase(token.getTokenType(), "bearer")) {
responseToken.setTokenType("Bearer");
} else { responseToken.setTokenType(token.getTokenType()); }
responseToken.setAccessToken(token.getValue());
responseToken.setExpiresIn(Long.valueOf(token.getExpiresIn()));
responseToken.setrefreshToken("");
responseToken.setExpiresOn(System.currentTimeMillis() + (token.getExpiresIn() * 1000));
responseToken.setScope(tokenRequest.getScope());
responseToken.setResource(tokenRequest.getResource());
} catch (JwtAuthException e) {
response.setStatus(NumberUtils.toInt(StringUtils.left(e.getCode(), 3), HttpStatus.UNAUTHORIZED.value()));
responseToken.setResponseCode(e.getCode());
responseToken.setResponseMessage(e.getMessage());
} catch (Exception e) {
logger.error(e.getMessage());
response.setStatus(HttpStatus.UNAUTHORIZED.value());
responseToken.setResponseCode(
String.format("%d%s%s", HttpStatus.UNAUTHORIZED.value(), SERVICE_CODE_ACCESS_TOKEN, "00"));
responseToken.setResponseMessage("Unauthorized. [Unknown]");
}
return responseToken;
}
private void verifyClient(ClientDetails clientDetails, String clientId, Set<String> scopeSet)
throws JwtAuthException {
if (StringUtils.isBlank(clientId)) {
throw new JwtAuthException(
String.format("%d%s%s", HttpStatus.BAD_REQUEST.value(), SERVICE_CODE_ACCESS_TOKEN, "02"),
"Invalid Mandatory Field {client_id}");
}
if (clientDetails == null) {
throw new JwtAuthException(
String.format("%d%s%s", HttpStatus.UNAUTHORIZED.value(), SERVICE_CODE_ACCESS_TOKEN, "00"),
"Unauthorized. [client not found]");
}
if (scopeSet.isEmpty()) {
throw new JwtAuthException(
String.format("%d%s%s", HttpStatus.BAD_REQUEST.value(), SERVICE_CODE_ACCESS_TOKEN, "02"),
"Invalid Mandatory Field {scope}");
}
if (!clientDetails.getScope().containsAll(scopeSet)) {
throw new JwtAuthException(
String.format("%d%s%s", HttpStatus.UNAUTHORIZED.value(), SERVICE_CODE_ACCESS_TOKEN, "00"),
"Unauthorized. [Bad client credentials(Include unacceptable scope)]");
}
}
private TokenEndpoint tokenEndpoint() {
return BeanUtils.getBean("tokenEndpoint", TokenEndpoint.class);
}
private class TokenIssuanceLogEnhancer implements TokenEnhancer {
@Override
public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
if (!EAIDBLogControl.isEnable()) {
logger.warn("DB logging is disabled. Skipping token issuance logging.");
return accessToken;
}
String clientId = authentication.getOAuth2Request().getClientId();
LocalDateTime startDateTime = LocalDateTime.now().minusHours(24);
int recentTokenCount = tokenIssuanceLogDAO.findRecentLogsForRestrictionCount(clientId, startDateTime);
try {
ClientVO clientVO = OAuth2Manager.getInstance().getClientInfo(clientId);
int dailyTokenLimit = clientVO.getDailyTokenLimit();
if (dailyTokenLimit > 0 && recentTokenCount >= dailyTokenLimit) {
throw new IssueLimitOAuth2Exception("Token issuance limit exceeded for this client");
}
// JWT 변환 이후의 최종 토큰 값 로깅
logTokenIssuance(true, false, "Token issued successfully", accessToken.getValue());
} catch (DAOException e) {
logger.warn("cannot find clientVo - " + clientId);
}
return accessToken;
}
}
private void logTokenIssuance(boolean isSuccess, boolean isRestrictionExempt, String resultMessage, String accessToken) {
try {
if (!EAIDBLogControl.isEnable()) {
logger.warn("DB logging is disabled. Skipping token issuance logging.");
return;
}
RequestContextData data = RequestContextData.ThreadLocalRequestContext.get();
OAuth2Manager.getInstance();
TokenIssuanceLog log = new TokenIssuanceLog();
String clientId = data.getClientId();
log.setClientId(clientId);
if(StringUtils.isNotBlank(clientId)) {
ClientVO clientVO = OAuth2Manager.getInstance().getClientInfo(clientId);
log.setAppName(clientVO.getClientName());
log.setOrgId(clientVO.getOrgId());
log.setOrgName(clientVO.getOrgName());
}
log.setGrantType(data.getGrantType());
log.setScope(data.getScope());
log.setIpAddress(data.getIpAddress());
log.setSuccessYn(isSuccess ? "Y" : "N");
log.setIssuanceDateTime(LocalDateTime.now());
log.setRestrictionExemptYn(isRestrictionExempt ? "Y" : "N");
log.setResultMessage(resultMessage);
log.setAccessToken(accessToken); // Add access token value to the log
tokenIssuanceLogDAO.saveTokenIssuanceLog(log);
} catch (Throwable th) {
logger.error("Error while logging token issuance: " + th.getMessage(), th);
}
}
public static void main(String[] args) throws Exception {
// First generate a public/private key pair
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
// generator.initialize(512, new SecureRandom());
//generator.initialize(1024, new SecureRandom());
generator.initialize(2048, new SecureRandom());
KeyPair pair = generator.generateKeyPair();
// The private key can be used to sign (not encrypt!) a message. The public key
// holder can then verify the message.
String message = "sSGJDwlJsel5WeXodzd3J3MQ20KYCZpL|2022-12-21T14:36:19+07:00";
// Let's sign our message
Signature privateSignature = Signature.getInstance("SHA256withRSA");
privateSignature.initSign(pair.getPrivate());
privateSignature.update(message.getBytes(StandardCharsets.UTF_8));
System.out.println(
"private key=" + Base64.getEncoder().encodeToString(pair.getPrivate().getEncoded()));
byte[] signature = privateSignature.sign();
//System.out.println("signature=" + new String(signature, StandardCharsets.UTF_8));
System.out.println("signature=" + Base64.getEncoder().encodeToString(signature));
// Let's check the signature
Signature publicSignature = Signature.getInstance("SHA256withRSA");
publicSignature.initVerify(pair.getPublic());
publicSignature.update(message.getBytes(StandardCharsets.UTF_8));
boolean isCorrect = publicSignature.verify(signature);
System.out.println("public key=" + Base64.getEncoder().encodeToString(pair.getPublic().getEncoded()));
System.out.println("Signature correct: " + isCorrect);
// The public key can be used to encrypt a message, the private key can be used
// to decrypt it.
// Encrypt the message
Cipher encryptCipher = Cipher.getInstance("RSA");
encryptCipher.init(Cipher.ENCRYPT_MODE, pair.getPublic());
byte[] cipherText = encryptCipher.doFinal(message.getBytes(StandardCharsets.UTF_8));
// Now decrypt it
Cipher decriptCipher = Cipher.getInstance("RSA");
decriptCipher.init(Cipher.DECRYPT_MODE, pair.getPrivate());
String decipheredMessage = new String(decriptCipher.doFinal(cipherText), StandardCharsets.UTF_8);
System.out.println(decipheredMessage);
}
}
@@ -0,0 +1,58 @@
package com.eactive.eai.authserver.custom;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
//
//@Configuration
//@EnableWebSecurity
//public class SecurityConfig {
//
// private final BearerTokenFilter tokenFilter;
//
// public SecurityConfig(BearerTokenFilter tokenFilter) {
// this.tokenFilter = tokenFilter;
// }
//
// @Bean
// public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
//
// http
// .csrf().disable()
// .authorizeRequests()
// .antMatchers("/auth/token/**").permitAll()
// .anyRequest().authenticated()
// .and()
// .addFilterBefore(tokenFilter, UsernamePasswordAuthenticationFilter.class);
//
// return http.build();
// }
//}
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private final BearerTokenFilter tokenFilter;
@Autowired
public SecurityConfig(BearerTokenFilter tokenFilter) {
this.tokenFilter = tokenFilter;
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.authorizeRequests()
.antMatchers("/auth/token/**").permitAll()
.anyRequest().authenticated()
.and()
.addFilterBefore(tokenFilter, UsernamePasswordAuthenticationFilter.class);
}
}
@@ -0,0 +1,477 @@
package com.eactive.eai.custom.adapter.app.impl;
import java.text.ParseException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Properties;
import java.util.Set;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
//import org.codehaus.jackson.map.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.security.oauth2.common.util.OAuth2Utils;
import org.springframework.security.oauth2.provider.ClientDetails;
import org.springframework.security.oauth2.provider.OAuth2Authentication;
import org.springframework.security.oauth2.provider.OAuth2Request;
import org.springframework.security.oauth2.provider.TokenRequest;
import org.springframework.security.oauth2.provider.token.DefaultTokenServices;
import org.springframework.security.oauth2.provider.token.TokenEnhancer;
import org.springframework.security.oauth2.provider.token.TokenEnhancerChain;
import org.springframework.security.oauth2.provider.token.TokenStore;
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;
import com.eactive.eai.adapter.app.BusinessApplication;
import com.eactive.eai.adapter.http.dynamic.filter.ApiAuthFilter;
import com.eactive.eai.adapter.http.dynamic.filter.JwtAuthException;
//import com.eactive.eai.adapter.http.dynamic.filter.JwtAuthFilter;
import com.eactive.eai.authserver.service.OAuth2Manager;
import com.eactive.eai.authserver.util.BeanUtils;
import com.eactive.eai.authserver.vo.ClientVO;
import com.eactive.eai.common.util.Logger;
//import com.nimbusds.jwt.SignedJWT;
/**
* JWT 토큰을 발급한다.(인증은 요청시스템에서 수행하고 토큰만 발급)
*
* @author
*
*/
public class JwtTokenCreator implements BusinessApplication {
public static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT);
private static final boolean VERYFY_CLIENT_SECRET = true;
private static final String[] GRANT_TYPES = { "client_credentials", "authorization_code", "password",
"refresh_token" };
@SuppressWarnings("unchecked")
@Override
public Object executeApplication(Properties prop, Object messageBytes, Properties tempProp) throws Exception {
// 응답전문용 Json Object
JSONObject resObject = new JSONObject();
try {
if (messageBytes == null) {
throw new Exception("Message is null.");
}
String message = new String((byte[]) messageBytes);
if (StringUtils.isBlank(message)) {
throw new Exception("Message is empty.");
}
/**
* {
* "grant_type":"client_credentials",
* "client_id":"WNHZOadBfB9UCPPuq6YArKUW87elXmZX",
* "client_secret":"JhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9",
* "scope":"manage",
* "expires_in":3600,
* "resource_ids":"aaa, bbb",
* "authorities":"ROLE_ADM, ROLE_DEV",
* "user_name":"aaaaaaaaaaaaaa",
* "support_refresh_token_yn": "Y",
* "refresh_token_expires_in":86400,
* "refresh_token":"JhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOj~~",
* "iss":"AZABBB0000",
* "aud":"ZZAAAA0000"
* }
*/
boolean isVerifyClientSecret = VERYFY_CLIENT_SECRET;
// 요청전문 Json Object
JSONObject jsonObject = (JSONObject) JSONValue.parse(message);
/* 2022.5.25. yseo
* 복합거래여부 확인, 복합거래의 경우 요청전문의 내용을 응답전문에 그대로 복사
* 복합거래 : 토큰발급 이후 2차 처리를 위한 Outbound Adapter를 다시 호출하는 거래
* 복합거래 대상 EAIServiceCD는 APP Adapter의 프로퍼티(SVC_CD)에 등록해서 관리.
*/
String svcCds = prop.getProperty("SVC_CD");
String[] svcCdArr = org.springframework.util.StringUtils.tokenizeToStringArray(svcCds, ",");
Boolean isComplex = ArrayUtils.contains(svcCdArr, tempProp.getProperty("EAISvcCd"))?true:false;
if(isComplex) {
resObject = jsonObject;
}
logger.debug("1. isComplex : [" + isComplex + "]");
String grantType = (String) jsonObject.get(OAuth2Utils.GRANT_TYPE);
if (!ArrayUtils.contains(GRANT_TYPES, grantType)) {
throw new JwtAuthException("unsupported_grant_type", "Unsupported grant type");
}
logger.debug("2. grantType : [" + grantType + "]");
String clientId = (String) jsonObject.get(OAuth2Utils.CLIENT_ID);
if (StringUtils.isBlank(clientId)) {
throw new JwtAuthException("invalid_client", "Bad client credentials(client_id is empty)");
/* clientId에 허용된 grantType인지 확인 2022.05.23 yseo*/
} else {
veryfyGrantType(clientId, grantType);
}
logger.debug("3. clientId : [" + clientId + "]");
/* grantType = "client_credentials" 이면 client_secret 체크 2022.05.23 yseo
* Mydata 관련해서는 무조건 체크해야함.
*/
// if (!StringUtils.equalsIgnoreCase(grantType, "client_credentials")) isVerifyClientSecret = false;
if (isVerifyClientSecret) {
String clientSecret = (String) jsonObject.get("client_secret");
if (StringUtils.isBlank(clientSecret)) {
throw new JwtAuthException("invalid_client", "Bad client credentials(client_secret is empty)");
}
veryfyClientSecret(clientId, clientSecret);
logger.debug("4. clientSecret : [" + clientSecret + "]");
}
Set<String> scopeSet = assignScope((String) jsonObject.get(OAuth2Utils.SCOPE));
if (scopeSet == null || scopeSet.size() == 0) {
if (!StringUtils.equals(grantType, "refresh_token")) {
throw new Exception("scope is empty.");
}
}
logger.debug("5. scopeSet : [" + scopeSet + "]");
Set<String> resourceIdSet = assignResourceIds((String) jsonObject.get("resource"));
Set<GrantedAuthority> authoritiesSet = assignAuthorities((String) jsonObject.get("authorities"));
String userName = (String) jsonObject.get("user_name");
if (StringUtils.equals(grantType, "password") || StringUtils.equals(grantType, "authorization_code")) {
if (StringUtils.isBlank(userName)) {
throw new Exception("user_name is empty.");
}
}
logger.debug("6. userName : [" + userName + "]");
/* 요청정보에 expires_in(토큰유효기간) 값이 없는 경우, client정보에 등록된 유효기간 찾아 대체 2022.05.23 yseo*/
String expIn = String.valueOf(jsonObject.get(OAuth2AccessToken.EXPIRES_IN));
Long expiresIn = null;
if (StringUtils.isNumeric(expIn)) {
expiresIn = Long.parseLong(expIn);
} else if (StringUtils.isBlank(expIn) || StringUtils.equalsIgnoreCase("null", expIn)) {
expiresIn = assignDefaultExpiresIn(clientId, "expires_in");
} else {
throw new Exception("expires_in is not numeric.");
}
logger.debug("7. expiresIn : [" + expIn + "]");
// Long expiresIn = (Long) jsonObject.get(OAuth2AccessToken.EXPIRES_IN);
// if (expiresIn == null) {
// expiresIn = assignDefaultExpiresIn(clientId, "expires_in");
// }
boolean supportRefreshToken = BooleanUtils.toBoolean((String) jsonObject.getOrDefault("support_refresh_token_yn", "N"));
/* 요청정보에 refresh_token_expires_in(리프레시토큰유효기간) 값이 없는 경우, client정보에 등록된 유효기간 찾아 대체 2022.05.23 yseo*/
String refreshExpIn = String.valueOf(jsonObject.get("refresh_token_expires_in"));
Long refreshTokenExpiresIn = null;
if (supportRefreshToken && StringUtils.isNumeric(refreshExpIn)) {
refreshTokenExpiresIn = Long.parseLong(refreshExpIn);
} else if (supportRefreshToken && (StringUtils.isBlank(refreshExpIn) || StringUtils.equalsIgnoreCase("null", refreshExpIn))) {
refreshTokenExpiresIn = assignDefaultExpiresIn(clientId, "refresh_token_expires_in");
} else if (supportRefreshToken) {
throw new Exception("refresh_token_expires_in is not numeric.");
}
logger.debug("8. refreshTokenExpiresIn : [" + refreshExpIn + "]");
// Long refreshTokenExpiresIn = (Long) jsonObject.get("refresh_token_expires_in");
// if (supportRefreshToken && refreshTokenExpiresIn == null) {
// refreshTokenExpiresIn = assignDefaultExpiresIn(clientId, "refresh_token_expires_in");
// }
String refreshToken = (String) jsonObject.get("refresh_token");
if (StringUtils.equals(grantType, "refresh_token") && StringUtils.isBlank(refreshToken)) {
throw new JwtAuthException("invalid_token", "refresh_token is empty.");
}
logger.debug("9. refreshToken : [" + refreshToken + "]");
String iss = (String) jsonObject.get("iss");
// if (StringUtils.isBlank(iss)) {
// iss = assignDefaultStringValue(clientId, "iss");
// }
// logger.debug("10. iss : [" + iss + "]");
//
String aud = (String) jsonObject.get("aud");
// if (StringUtils.isBlank(aud)) {
// aud = assignDefaultStringValue(clientId, "aud");
// }
// logger.debug("11. aud : [" + aud + "]");
String tokenStr = createToken(grantType, clientId, scopeSet, resourceIdSet, authoritiesSet, userName, expiresIn,
supportRefreshToken, refreshTokenExpiresIn, refreshToken, iss, aud);
// logger.debug("#####created tokenStr==>"+tokenStr);
//20211122 bearer -> Bearer로 변환철. mydata api준수
JSONObject jsonObj = (JSONObject) JSONValue.parse(tokenStr);
String tokenType = (String)jsonObj.get("token_type");
if(StringUtils.isNotBlank(tokenType) && StringUtils.equalsIgnoreCase(tokenType, "bearer")) {
jsonObj.put("token_type","Bearer");
}
jsonObj.remove("jti");
jsonObj.put("resource", (String) jsonObject.get("resource"));
if (StringUtils.equals(grantType, "password") || StringUtils.equals(grantType, "authorization_code")) {
jsonObj.put("refresh_token_expires_in", refreshTokenExpiresIn-1);
}
tokenStr = jsonObj.toJSONString();
logger.debug("##### Bearer checked tokenStr==>"+tokenStr);
// 복합거래의 경우 발급된 토큰정보를 "TOKEN_DATAGROUP" 그룹으로 추가
if(isComplex) {
resObject.put("TOKEN_DATAGROUP", jsonObj);
} else {
resObject.putAll(jsonObj);
}
String resStr = resObject.toJSONString();
return resStr.getBytes();
} catch (JwtAuthException e) {
logger.error(e);
JSONObject errorJson = new JSONObject();
errorJson.put("error", e.getCode());
errorJson.put("error_description", e.getMessage());
resObject.putAll(errorJson);
return resObject.toJSONString().getBytes();
} catch (Exception e) {
logger.error(e);
JSONObject errorJson = new JSONObject();
errorJson.put("error", "invalid_request");
errorJson.put("error_description", e.getMessage());
resObject.putAll(errorJson);
return resObject.toJSONString().getBytes();
}
}
private Set<String> assignResourceIds(String resourceIds) throws Exception {
if (StringUtils.isBlank(resourceIds)) {
return null;
}
String[] arr = org.springframework.util.StringUtils.tokenizeToStringArray(resourceIds, ",");
Set<String> resourceIdSet = new HashSet<String>();
for (String resourceId : arr) {
resourceIdSet.add(resourceId);
}
return resourceIdSet;
}
private void veryfyGrantType(String clientId, String grantType) throws JwtAuthException {
ClientDetails details = OAuth2Manager.getInstance().getClientDeatilsStore().get(clientId);
if (details == null) {
throw new JwtAuthException("invalid_client", "Bad client credentials(not found)");
}
if (!details.getAuthorizedGrantTypes().contains(grantType)) {
throw new JwtAuthException("unsupported_grant_type", "Unsupported grant type for ClientID");
}
}
private void veryfyClientSecret(String clientId, String clientSecret) throws JwtAuthException {
ClientDetails details = OAuth2Manager.getInstance().getClientDeatilsStore().get(clientId);
if (details == null) {
throw new JwtAuthException("invalid_client", "Bad client credentials(not found)");
}
if (!StringUtils.equals(details.getClientSecret(), clientSecret)) {
throw new JwtAuthException("invalid_client", "Bad client credentials");
}
}
private Long assignDefaultExpiresIn(String clientId, String flag) throws JwtAuthException {
ClientDetails details = OAuth2Manager.getInstance().getClientDeatilsStore().get(clientId);
Long retLong = null;
if (details == null) {
throw new JwtAuthException("invalid_client", "Bad client credentials(not found)");
}
if (StringUtils.equals(flag, "expires_in") && StringUtils.isNotBlank(details.getAccessTokenValiditySeconds().toString())) {
retLong = new Long(details.getAccessTokenValiditySeconds());
} else if (StringUtils.equals(flag, "refresh_token_expires_in") && StringUtils.isNotBlank(details.getRefreshTokenValiditySeconds().toString())) {
retLong = new Long(details.getRefreshTokenValiditySeconds());
} else {
throw new JwtAuthException("invalid_client", "Bad expires_in/refresh_token_expires_in(not found)");
}
return retLong;
}
private String assignDefaultStringValue(String clientId, String flag) throws Exception {
ClientVO client = (ClientVO) OAuth2Manager.getInstance().getClientDeatilsStore().get(clientId);
String retStr = "";
if (client == null) {
throw new JwtAuthException("invalid_client", "Bad client credentials(not found)");
}
if (StringUtils.equals(flag, "iss") && StringUtils.isNotBlank(client.getIssuer())) {
retStr = client.getIssuer();
} else if (StringUtils.equals(flag, "aud") && StringUtils.isNotBlank(client.getAudience())) {
retStr = client.getAudience();
} else {
throw new Exception("iss/aud is null.");
}
logger.info("===================>"+flag+" : ["+retStr+"]");
return retStr;
}
private Set<String> assignScope(String scopes) throws Exception {
if (StringUtils.isBlank(scopes)) {
return new HashSet<String>();
}
String[] arr = org.springframework.util.StringUtils.tokenizeToStringArray(scopes, " ");
Set<String> scopeSet = new HashSet<String>();
for (String scope : arr) {
scopeSet.add(scope);
}
return scopeSet;
}
private Set<GrantedAuthority> assignAuthorities(String authorities) throws Exception {
if (StringUtils.isBlank(authorities)) {
return new HashSet<GrantedAuthority>();
}
String[] arr = org.springframework.util.StringUtils.tokenizeToStringArray(authorities, ",");
Set<GrantedAuthority> authoritiesSet = new HashSet<GrantedAuthority>();
for (String authority : arr) {
authoritiesSet.add(new SimpleGrantedAuthority(authority));
}
return authoritiesSet;
}
private String createToken(String grantType, String clientId, Set<String> scopeSet, Set<String> resourceIdSet,
Set<GrantedAuthority> authoritiesSet, String userName, Long expiresIn, boolean supportRefreshToken,
Long refreshTokenExpiresIn, String refreshToken, String issuer, String audience) throws Exception {
HashMap<String, String> authorizationParameters = new HashMap<String, String>();
authorizationParameters.put(OAuth2Utils.GRANT_TYPE, grantType);
authorizationParameters.put(OAuth2Utils.CLIENT_ID, clientId);
// authorizationParameters.put("iss", issuer);
// authorizationParameters.put("aud", audience);
if (StringUtils.equals(grantType, "password") || StringUtils.equals(grantType, "authorization_code")) {
authorizationParameters.put("user_name", userName);
}
Set<String> responseType = new HashSet<String>();
responseType.add(grantType);
OAuth2Request authorizationRequest = new OAuth2Request(authorizationParameters, clientId, authoritiesSet, true,
scopeSet, resourceIdSet, "", responseType, null);
Authentication authentication = null;
if (StringUtils.equals(grantType, "password") || StringUtils.equals(grantType, "authorization_code")) {
User userPrincipal = new User(userName, "", true, true, true, true, authoritiesSet);
authentication = new UsernamePasswordAuthenticationToken(userPrincipal, null, authoritiesSet);
}
OAuth2Authentication authenticationRequest = new OAuth2Authentication(authorizationRequest, authentication);
authenticationRequest.setAuthenticated(true);
DefaultTokenServices tokenServices = createDefaultTokenServices(supportRefreshToken, expiresIn,
refreshTokenExpiresIn);
OAuth2AccessToken accessToken = null;
if (StringUtils.equals(grantType, "refresh_token")) {
tokenServices.setReuseRefreshToken(true);
TokenRequest tokenRequest = new TokenRequest(authorizationParameters, clientId, scopeSet, grantType);
accessToken = tokenServices.refreshAccessToken(refreshToken, tokenRequest);
} else {
accessToken = tokenServices.createAccessToken(authenticationRequest);
}
logger.debug("accessToken=" + accessToken.toString());
return new ObjectMapper().writeValueAsString(accessToken);
}
private DefaultTokenServices createDefaultTokenServices(boolean supportRefreshToken, Long expiresIn,
Long refreshTokenExpiresIn) throws Exception {
TokenEnhancerChain tokenEnhancerChain = new TokenEnhancerChain();
tokenEnhancerChain.setTokenEnhancers(Arrays.asList(tokenEnhancer(), accessTokenConverter()));
DefaultTokenServices tokenServices = new DefaultTokenServices();
tokenServices.setTokenStore(tokenStore());
tokenServices.setSupportRefreshToken(supportRefreshToken);
tokenServices.setTokenEnhancer(tokenEnhancerChain);
if (expiresIn != null) {
tokenServices.setAccessTokenValiditySeconds(expiresIn.intValue());
}
if (supportRefreshToken && refreshTokenExpiresIn != null) {
tokenServices.setRefreshTokenValiditySeconds(refreshTokenExpiresIn.intValue());
}
return tokenServices;
}
private TokenEnhancer tokenEnhancer() {
// return BeanUtils.getBean("tokenEnhancer", TokenEnhancer.class);
return (TokenEnhancer) accessTokenConverter();
}
private JwtAccessTokenConverter accessTokenConverter() {
return BeanUtils.getBean("jwtAccessTokenConverter", JwtAccessTokenConverter.class);
}
private TokenStore tokenStore() {
return new JwtTokenStore((JwtAccessTokenConverter) accessTokenConverter());
}
public static void main(String args[]){
// String token = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImRlZmF1bHRfc3NsX2tleSJ9.ew0KICAiaXNzIjogIkExQUFFUjAwMDAiLA0KICAiYXVkIjoiWlZBQUVNMDAwMCIsDQogICJqdGkiOiJlYmI4NmUyMi03YzZmLTQzZDItOTZiMy05NjU0MTAyZTE1M2MiLA0KICAiZXhwIjoiMTYzNjk2ODcwOSIsDQogICJzY29wZSI6ImJhbmsubGlzdCINCn0.nF0JeCHJHn7yBzhjEnge_Eqi0aAeD_WTt0iUB2V2VPJV9zWgMW-Npr3fCXlmYP5HoTjeQES5ftrxWLlLMaxRPHDKWwafgwLm3eQt9r_x_j0PRn-KpoZ9xTWy3oKCQvP0DN0IQepLZfM214nCrjdSPCV17oUS03cBW0lIDmXeROSR2auAMZvkSQqF74E_QLEKF3XLk0MM3Jz4nZp1bBj3PfJyCxjy2ibp12TN0vHccGmSItqANsbeVn0sQybdIraNzb9bptLwWe8WYyn3XugEA9-bavPOSPwrGgLENBnHnzWj1L8yS0rXuEjydCwf6HMAbpNVHQpicM0Q3xdl5W1PBA";
// String[] components = token.split("\\s");
//String r "refresh_token_expires_in":"604800","refresh_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImRlZmF1bHRfc3NsX2tleSJ9.ew0KICAiaXNzIjogIkExQUFFUjAwMDAiLA0KICAiYXVkIjoiWlZBQUVNMDAwMCIsDQogICJqdGkiOiIwMzI5Y2M3Zi04Y2U2LTQxNzQtYTc5Ny1mMWRjNjg1ZmM5NDAiLA0KICAiZXhwIjoiMTYzNjk2ODcwOSINCn0.dQx6kWm1JCEgueZjUsQJYNDBu2i4P1-jVLKgUH6aX2aBFunlUBtk_zMMFIJb3OvQpz8qPc9xhs1MkM2YHdpJlNleHY3GhhjiQMfYeiCU9yOzv-zuyvOY1pCO0McmHJNdFcxoQfHHFNm4yFay3dOAFE0Z3FQ74nwxrgnzKSucrHCKyGz0pHdLWnWxHNrJMZ4NmaSyPRxU3qxdWFe1soxqgTqpW_SQkTl3D5SWXgevc6zihPPpFhCSOJ39RrJlIVSH1IY5NRAm71AoaZ6ooLsLvPNED3Z7rG-g9coKEU_DASeCNslRZrP0D3azqswFeu-np3zFZUTrgP_TNT6FFReEnA";
try {
JwtTokenCreator jtc = new JwtTokenCreator();
// String me="\"d\"";
String message= "{\"refresh_token_expires_in\":\"86400\",\"refresh_token\":null,\"grant_type\":\"authorization_code\",\"support_refresh_token_in\":\"Y\",\"user_name\":\"aaa\",\"scope\":\"bank.list\",\"expires_in\":\"3600\",\"client_id\":\"ZZAAAAPacQmv3ZVhtPISDSA9jb9AWjak\"}";
JSONObject jsonObject = (JSONObject) JSONValue.parse(message);
String grantType = (String) jsonObject.get(OAuth2Utils.GRANT_TYPE);
String clientId = (String) jsonObject.get(OAuth2Utils.CLIENT_ID);
// String clientSecret = (String) jsonObject.get("client_secret");
Set<String> scopeSet;
Properties prop = null;
byte[] msgBytes = null;
msgBytes = message.getBytes();
jtc.executeApplication(prop, msgBytes, prop);
// scopeSet = jtc.assignScope((String) jsonObject.get(OAuth2Utils.SCOPE));
//
//
// Set<String> resourceIdSet = jtc.assignResourceIds((String) jsonObject.get("resource_ids"));
// Set<GrantedAuthority> authoritiesSet = jtc.assignAuthorities((String) jsonObject.get("authorities"));
//
// String userName = (String) jsonObject.get("user_name");
//
//
// Long expiresIn = Long.parseLong(jsonObject.get(OAuth2AccessToken.EXPIRES_IN).toString());
// Long refreshTokenExpiresIn = Long.parseLong(jsonObject.get("refresh_token_expires_in").toString());
//// Long expiresIn = (Long) jsonObject.get(OAuth2AccessToken.EXPIRES_IN);
//// Long refreshTokenExpiresIn = (Long) jsonObject.get("refresh_token_expires_in");
// boolean supportRefreshToken = BooleanUtils
// .toBoolean((String) jsonObject.getOrDefault("support_refresh_token_yn", "Y"));
//
// String refreshToken = (String) jsonObject.get("refresh_token");
//
// jtc.createToken( grantType, clientId, scopeSet, resourceIdSet,authoritiesSet, userName, expiresIn, supportRefreshToken,
// refreshTokenExpiresIn, refreshToken);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@@ -0,0 +1,83 @@
package com.eactive.eai.custom.message;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import org.apache.commons.lang3.StringUtils;
import com.eactive.eai.common.server.Keys;
import com.eactive.eai.common.util.StringUtil;
import com.eactive.eai.common.util.UUID;
/**
* 1. 기능 : UUID Generation Class 2. 처리 개요 : * - 3. 주의사항
*
* @author :
* @version : v 1.0.0
* @see : 관련 기능을 참조
* @since : :
*/
public final class GUIDGeneratorKJB {
private static final DateTimeFormatter SDF_YYYYMMDDHHMMSS = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
/*
* 그룹사코드(3) + 호스트명(8) + 서버구분번호(2) + 일자(8) + 전문생성시간(6) + 일련번호(6) + 시스템경로번호(3, '001')
*/
public static final int GUID_LENGTH = 33; // 시스템경로번호 제외부분
/**
* 1. 기능 : Private 생성자 2. 처리 개요 : - 3. 주의사항 - Instance 생성하지 못함
**/
private GUIDGeneratorKJB() {
}
public synchronized static String getGUID(String groupCmpCd) {
if (StringUtils.isEmpty(groupCmpCd)) groupCmpCd = "034"; //광주은행 그룹회사코드 "034"
String nowDateTime = SDF_YYYYMMDDHHMMSS.format(ZonedDateTime.now());
String strSeq = StringUtils.leftPad(String.valueOf(seq), 6, '0') ;
String guid = groupCmpCd + UNIQUE_NUM + nowDateTime + strSeq + "001";
seq++;
if (seq > 999999) {
seq = 1;
}
return guid;
}
private static String UNIQUE_NUM;
private static int seq = 1;
static {
String hostname = "";
try {
hostname = java.net.InetAddress.getLocalHost().getHostName();
}
catch(Exception e) {
hostname = "________";
}
if(hostname.getBytes().length != 8) {
if(hostname.getBytes().length < 8) {
hostname = StringUtils.leftPad(hostname, 8, '_');
} else if(hostname.getBytes().length > 8) {
hostname = StringUtils.substring(hostname, 0, 8);
}
}
String serverName = System.getProperty(Keys.SERVER_KEY);
String instid = "00";
if(serverName != null && serverName.length() > 2) {
instid = serverName.substring(serverName.length()-2, serverName.length());
}
UNIQUE_NUM = hostname.toUpperCase() + instid;
}
public static void main(String[] args) {
String guid = getGUID("051");
System.out.println("[" + guid.length() + "]" + guid);
}
}
@@ -0,0 +1,202 @@
package com.eactive.eai.custom.message;
import org.apache.commons.lang3.StringUtils;
import com.eactive.eai.common.server.EAIServerManager;
import com.eactive.eai.common.util.StringUtil;
import com.eactive.eai.message.StandardMessage;
import com.eactive.eai.message.service.DefaultInterfaceMapper;
import com.ext.eai.common.stdmessage.STDMessageKeys;
@SuppressWarnings("serial")
public class InterfaceMapperKJB extends DefaultInterfaceMapper {
private static String SESSION_ID = "INTERFACE_COMMON.MCI_SESN_ID";
private static String INSTANCE_ID = "INTERFACE_COMMON.MCI_INSTNC_ID";
@Override
public String getEaiSvcCode(StandardMessage standardMessage) {
String eaiSvcCode = null;
String interfaceId = getInterfaceId(standardMessage);
String returnType = getSendRecvDivision(standardMessage); // S | R
String inExDivision = getInExDivision(standardMessage); // 1 | 2
if (interfaceId == null)
interfaceId = "";
interfaceId = interfaceId.trim();
// TODO : site에 맞게 조합해야 함.
eaiSvcCode = interfaceId + returnType + StringUtils.defaultString(inExDivision);
return eaiSvcCode;
}
@Override
public void setGuid(StandardMessage standardMessage, String guid) {
if (guid == null)
throw new RuntimeException("guid is null");
if (guid.length() != 36)
throw new RuntimeException("The length of guid is not 36");
setItemValue(standardMessage, getPath(GUID), guid);
}
@Override
public String getGuid(StandardMessage standardMessage) {
String guid = getItemValue(standardMessage, getPath(GUID));
if (guid.length() == 36) {
guid = guid.substring(0, 33);
}
return guid;
}
@Override
public String getGuidSeq(StandardMessage standardMessage) {
String guidseq = null;
String guid = getItemValue(standardMessage, getPath(GUID));
if (guid.length() == 36) {
guidseq = guid.substring(33);
} else {
guidseq = "000";
}
return guidseq;
}
@Override
public void setGuidSeq(StandardMessage standardMessage, String guidSeq) {
setItemValue(standardMessage, getPath(GUID), getGuid(standardMessage) + guidSeq);
}
@Override
public String getOrgGuid(StandardMessage standardMessage) {
String orgGuid = getItemValue(standardMessage, getPath(GUID_ORG));
if (orgGuid.length() == 36) {
orgGuid = orgGuid.substring(0, 33);
}
return orgGuid;
}
@Override
public void setOrgGuid(StandardMessage standardMessage, String orgGuid) {
if (orgGuid.length() == 36) {
orgGuid = orgGuid.substring(0, 33);
}
setItemValue(standardMessage, getPath(GUID_ORG), orgGuid);
}
@Override
public String nextGuidSeq(StandardMessage standardMessage) {
String guidSeq = getGuidSeq(standardMessage);
if (guidSeq == null)
return "";
int seq = 0;
try {
seq = Integer.parseInt(guidSeq) + 1;
} catch (NumberFormatException e) {
seq = 1;
}
guidSeq = StringUtil.stringFormat(Integer.toString(seq), true, '0', 3);
setGuidSeq(standardMessage, guidSeq);
return guidSeq;
}
/**
* 표준전문의 복원은 COMMON.ORTR_RESTR_YN 의 value는 (Y/N) 엔진에서 복원여부 의 value는 (1/0)
*/
@Override
public String getRecoverYn(StandardMessage standardMessage) {
String data = getItemValue(standardMessage, getPath(RECOVER_YN));
if ("Y".equals(data)) {
return "1";
} else {
return "0";
}
}
@Override
public void setRecoverYn(StandardMessage standardMessage, String recoverYn) {
if ("1".equals(recoverYn)) {
setItemValue(standardMessage, getPath(RECOVER_YN), "Y");
} else {
setItemValue(standardMessage, getPath(RECOVER_YN), "N");
}
}
@Override
public String getInstCode(StandardMessage standardMessage) {
EAIServerManager server = EAIServerManager.getInstance();
if (server != null && server.isMCI()) {
return getItemValue(standardMessage, INSTANCE_ID);
} else {
return "";
}
}
@Override
public void setInstCode(StandardMessage standardMessage, String instCode) {
EAIServerManager server = EAIServerManager.getInstance();
if (server != null && server.isMCI()) {
setItemValue(standardMessage, INSTANCE_ID, instCode);
}
}
@Override
public String getSessionId(StandardMessage standardMessage) {
EAIServerManager server = EAIServerManager.getInstance();
if (server != null && server.isMCI()) {
return getItemValue(standardMessage, SESSION_ID);
} else {
return "";
}
}
@Override
public void setSessionId(StandardMessage standardMessage, String sessionId) {
EAIServerManager server = EAIServerManager.getInstance();
if (server != null && server.isMCI()) {
setItemValue(standardMessage, SESSION_ID, sessionId);
}
}
/*
* 엔진 에서는 public static final String RESPONSE_TYPE_CODE_N = "0";//정상(normal)
* public static final String RESPONSE_TYPE_CODE_E = "1";//오류(error)
*/
@Override
public void setResponseType(StandardMessage standardMessage, String responseType) {
if (responseType != null && (STDMessageKeys.RESPONSE_TYPE_CODE_N.equals(responseType)
|| STDMessageKeys.RESPONSE_TYPE_CODE_E.equals(responseType))) {
if (STDMessageKeys.RESPONSE_TYPE_CODE_N.equals(responseType)) {
setItemValue(standardMessage, getPath(RESPONSE_TYPE), "NR");
} else {
setItemValue(standardMessage, getPath(RESPONSE_TYPE), "ER");
}
} else {
setItemValue(standardMessage, getPath(RESPONSE_TYPE), responseType);
}
}
@Override
public String getInterfaceId(StandardMessage standardMessage) {
String interfaceId = getItemValue(standardMessage, getPath(INTERFACE_ID));
if (interfaceId == null)
return "";
interfaceId = interfaceId.trim();
return interfaceId;
}
@Override
public String getReqSysCode(StandardMessage standardMessage) {
// apiPath의 값에서 추출할 예정 : serviceId = api_path
String apiPath = getItemValue(standardMessage, getPath(SERVICE_ID));
if (apiPath != null) {
String[] split = apiPath.split("/");
if (split.length > 2) {
String route = split[1].toUpperCase();
if (route.length() > 3) {
route = route.substring(0, 3);
}
return route;
}
}
return null;
}
}