개발sync 20251205
This commit is contained in:
@@ -5,7 +5,8 @@
|
|||||||
<session-descriptor>
|
<session-descriptor>
|
||||||
<timeout-secs>1800</timeout-secs>
|
<timeout-secs>1800</timeout-secs>
|
||||||
<cookie-name>JSESSIONID_EMS</cookie-name>
|
<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>
|
</session-descriptor>
|
||||||
|
|
||||||
<container-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) );
|
||||||
|
%>
|
||||||
@@ -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 </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() %> </td>
|
||||||
|
<td align='left' bgcolor="#ffffff"><%= new Date(om.getJMSTimestamp()) %> </td>
|
||||||
|
<td align='left' bgcolor="#ffffff"><%= msg.getBwkCls() %> </td>
|
||||||
|
<td align='left' bgcolor="#ffffff"><%= msg.getEAISvcCd() %> </td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch(Exception e) {
|
||||||
|
out.println(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table><br>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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] %> </td>
|
||||||
|
<td align='right' width='200' bgcolor="#ffffff"><%= monitorDataTotal[i][1] %> </td>
|
||||||
|
<td align='right' width='200' bgcolor="#ffffff"><%= monitorDataTotal[i][2] %> </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] %> </td>
|
||||||
|
<td align='right' width='200' bgcolor="#ffffff"><%= monitorData[i][1] %> </td>
|
||||||
|
<td align='right' width='200' bgcolor="#ffffff"><%= monitorData[i][2] %> </td>
|
||||||
|
<td align='right' width='200' bgcolor="#ffffff"><%= monitorData[i][3] %> </td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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">어댑터 그룹명 : </td>
|
||||||
|
<td align='left'> <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">어댑터 이름 : </td>
|
||||||
|
<td align='left'> <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"> 어뎁터업무 이름 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="adptBwkNm" style="width:98%;" value="<%=aVO.getName()%>" readonly></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> 리스너클래스명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="listenerClass" style="width:98%;" value="<%=aVO.getListenerClass()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> 프라퍼티 그룹명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="propGroupName" style="width:98%;" value="<%=aVO.getPropGroupName()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> 테스터클래스명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="testCallClass" style="width:98%;" value="<%=aVO.getTestCallClass()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> 어뎁터 상태 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="status" style="width:98%;" value="<%=aVO.isStatus()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> AdapterVO : </td>
|
||||||
|
<td align='left' style="height:40px;"><%=aVO.toString()%></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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">어댑터그룹명 : </td>
|
||||||
|
<td align='left' > <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' > <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"> 어댑터 그룹명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="name" style="width:98%" value="<%=vo.getName()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> 업무구분코드 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="eaiBizCode" style="width:98%" value="<%=vo.getEaiBizCode()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> 표준/비표준 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="standard" style="width:98%" value="<%=vo.getAdptrMsgPtrnCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> 어댑터 사용구분 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="refClass" style="width:98%" value="<%=vo.isUsedFlag()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> 송수신 로그여부 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="srLogFlag" style="width:98%" value="<%=vo.isSrLogFlag()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> IN/OUT 구분 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="gubun" style="width:98%" value="<%=vo.getGubun()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> 어뎁터 유형 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="type" style="width:98%" value="<%=vo.getType()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> 메시지타입 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="msgType" style="width:98%" value="<%=vo.getMessageType()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> 참조 클래스명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="refClass" style="width:98%" value="<%=vo.getRefClass()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> KESA F/W 사용여부 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="kefsUseYn" style="width:98%" value="<%=vo.getKesaUseYn()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> 특정 LU 사용여부 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="luUseYn" style="width:98%" value="<%=vo.isSpcfcLUUseYn()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> 대외기관코드<br>(표준전문셋팅) : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="osidinstiNo" style="width:98%" value="<%=vo.getOsidInstiNo()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> 어댑터 기관코드<br>(대외기관명) : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="adptInstiCd" style="width:98%" value="<%=vo.getAdptrInstiCode()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> 업체코드 데이터<br>(업무데이터 추출 룰) : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="companyData" style="width:98%" value="<%=vo.getCompanyCodeData()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> TAS 어댑터 여부 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="tasAdptYn" style="width:98%" value="<%=vo.getTestMasterYn()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> 어댑터 별명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="nickName" style="width:98%" value="<%=vo.getAdptrNickName()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='220' bgcolor="#ccccff"> AdapterGroupVO.toString() : </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"> <font color="yellow"><b>어뎁터업무 이름</b></font></td>
|
||||||
|
<td bgcolor="#003366"> <font color="yellow"><b>리스너클래스명</b></font></td>
|
||||||
|
<td bgcolor="#003366"> <font color="yellow"><b>프라퍼티 그룹명</b></font></td>
|
||||||
|
<td bgcolor="#003366"> <font color="yellow"><b>테스터클래스명</b></font></td>
|
||||||
|
<td bgcolor="#003366"> <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>
|
||||||
@@ -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 서비스 코드 : </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 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' > <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"> <font color="yellow"><b>내용</b> </font></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<%
|
||||||
|
if(vo != null ){
|
||||||
|
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> EAI서버인스턴스명 : </td>
|
||||||
|
<td align='left' style="height: 40px;"> <input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=vo.getEaiInstCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> EAI서비스코드 : </td>
|
||||||
|
<td align='left' style="height: 40px;"> <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]%>) </td>
|
||||||
|
<td align='left' style="height: 40px;"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 기관코드 : </td>
|
||||||
|
<td align='left' style="height: 40px;"> <input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=fld.getB2bExtnlInstiCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 세부업무구분명 : </td>
|
||||||
|
<td align='left' style="height: 40px;"> <input type="text" name="LOADSEQUENCE" style="width:98%" value="<%=fld.getBzwkVal()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 어뎁터업무그룹명 : </td>
|
||||||
|
<td align='left' style="height: 40px;"> <input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=fld.getAdapterGroupName()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 어뎁터업무이름 : </td>
|
||||||
|
<td align='left' style="height: 40px;"> <input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=fld.getAdapterName()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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서비스처리번호 : </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 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서비스코드 : </td>
|
||||||
|
<td align='left' > <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서비스처리번호 : </td>
|
||||||
|
<td align='left' > <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"> <font color="yellow"><b>내용</b> </font></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<%
|
||||||
|
if(vo != null ){
|
||||||
|
|
||||||
|
%>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> IF서비스코드 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=vo.getEaiSvcCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> IF서비스 처리번호 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=vo.getSvcPssSeq()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 기관코드추출 CLASS : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="LOADSEQUENCE" style="width:98%" value="<%=vo.getRouteActionName()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 어댑터라우팅추출 CLASS : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=vo.getAdapterActionName()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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">기관코드 + 서비스처리순서 : </td>
|
||||||
|
<td align='left'> <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">기관코드 : </td>
|
||||||
|
<td align='left' > <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">서비스처리번호 : </td>
|
||||||
|
<td align='left' > <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"> <font color="yellow"><b>내용</b> </font></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<%
|
||||||
|
if(vo != null ){
|
||||||
|
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 기관코드 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="svcPssSeq" style="width:98%" value="<%=vo.getB2bExtnlInstiCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 서비스처리순서 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="svcPssSeq" style="width:98%" value="<%=vo.getSvcPssSeq()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 수동인터페이스유형 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="psvItfTp" style="width:98%" value="<%=vo.getPsvItfTp()%>">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 수동업무시스템명 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="psvBwkSysNm" style="width:98%" value="<%=vo.getPsvBwkSysNm()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%--
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 수동시스템ID : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="psvSysID" style="width:98%" value="<%=vo.getPsvSysID()%>"></td>
|
||||||
|
</tr>
|
||||||
|
--%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 수동시스템서비스코드 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="psvSysSvcCd" style="width:98%" value="<%=vo.getPsvSysSvcCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 수동시스템인터페이스유형 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="psvSysItfTp" style="width:98%" value="<%=vo.getPsvSysItfTp()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> FailOver여부 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="flOvrCls" style="width:98%" value="<%=vo.getFlOvrCls()%>">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 변환유무 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="cnvEn" style="width:98%" value="<%=vo.getCnvEn()%>">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 변환메시지ID : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="cnvMsgID" style="width:98%" value="<%=vo.getCnvMsgID()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 기본응답메시지비교값 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="bsRspMsgCprVl" style="width:98%" value="<%=vo.getBsRspMsgCprVl()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 기본응답변환유무 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="bsRspCnvEn" style="width:98%" value="<%=vo.getBsRspCnvEn()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 기본응답변환메시지ID : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="bsRspCnvMsgID" style="width:98%" value="<%=vo.getBsRspCnvMsgID()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 오류응답메시지비교값 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="errRspMsgCprVl" style="width:98%" value="<%=vo.getErrRspMsgCprVl()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 오류응답변환유무 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="errRspCnvEn" style="width:98%" value="<%=vo.getErrRspCnvEn()%>"></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 오류응답변환메시지ID : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="errRspCnvMsgID" style="width:98%" value="<%=vo.getErrRspCnvMsgID()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 다음서비스처리순서 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="nxtSvcPssSeq" style="width:98%" value="<%=vo.getNxtSvcPssSeq()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> Outbound라우팅명 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="outbRtnNm" style="width:98%" value="<%=vo.getOutbRtnNm()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 타임아웃값 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="tmoVl" style="width:98%" value="<%=vo.getTmoVl()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 보상서비스처리코드 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="cpnsSvcPssCd" style="width:98%" value="<%=vo.getCpnsSvcPssCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 추가삭제여부 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="supplDelYn" style="width:98%" value="<%=vo.getSupplDelYn()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 헤더제어구분코드 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="hdrCtrlDstcd" style="width:98%" value="<%=vo.getHdrCtrlDstcd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 참고클래스명 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="hdrRefClsName" style="width:98%" value="<%=vo.getHdrRefClsName()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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">로그조회키 : </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 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' > <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"> <font color="yellow"><b>Property Key</b> </font></td>
|
||||||
|
<td align='left' bgcolor="#003366"> <font color="yellow"> <b>Property Value</b></font></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
if(vo != null) {
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> EAI서비스코드 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="EaiSvcCd" style="width:98%" value="<%=vo.getEaiSvcCd()%>" readonly></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 추출구분 : </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];
|
||||||
|
}
|
||||||
|
%> <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"> <font color="yellow"><b>FldPrcssNo[<%= vo.getBizKeyFld(i).getColPssSeq() %>]</b> </font></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 메시지유형 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <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"> 업무필드명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="BwkColNm" style="width:98%" value="<%=vo.getBizKeyFld(i).getBwkColNm()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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>
|
||||||
@@ -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 : "/> </td>
|
||||||
|
<td align='left'> <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"> <font color="yellow"><b>내용</b> </font></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<%
|
||||||
|
if(sm != null ){
|
||||||
|
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 기관코드 : </td>
|
||||||
|
<td align='left'> <input type="text" name="svcPssSeq" size='60' value="<%=sm.getC2rExtnlInstiCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 서비스처리순서 : </td>
|
||||||
|
<td align='left'> <input type="text" name="svcPssSeq" size='60' value="<%=sm.getSvcPssSeq()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 수동인터페이스유형 : </td>
|
||||||
|
<td align='left'> <input type="text" name="psvItfTp" size='60' value="<%=sm.getPsvItfTp()%>">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 수동업무시스템명 : </td>
|
||||||
|
<td align='left'> <input type="text" name="psvBwkSysNm" size='60' value="<%=sm.getPsvBwkSysNm()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 수동시스템ID : </td>
|
||||||
|
<td align='left'> <input type="text" name="psvSysID" size='60' value="<%=sm.getPsvSysID()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 수동시스템서비스코드 : </td>
|
||||||
|
<td align='left'> <input type="text" name="psvSysSvcCd" size='60' value="<%=sm.getPsvSysSvcCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 수동시스템인터페이스유형 : </td>
|
||||||
|
<td align='left'> <input type="text" name="psvSysItfTp" size='60' value="<%=sm.getPsvSysItfTp()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> FailOver여부 : </td>
|
||||||
|
<td align='left'> <input type="text" name="flOvrCls" size='60' value="<%=sm.getFlOvrCls()%>">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 변환유무 : </td>
|
||||||
|
<td align='left'> <input type="text" name="cnvEn" size='60' value="<%=sm.getCnvEn()%>">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 변환메시지ID : </td>
|
||||||
|
<td align='left'> <input type="text" name="cnvMsgID" size='60' value="<%=sm.getCnvMsgID()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 기본응답메시지비교값 : </td>
|
||||||
|
<td align='left'> <input type="text" name="bsRspMsgCprVl" size='60' value="<%=sm.getBsRspMsgCprVl()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 기본응답변환유무 : </td>
|
||||||
|
<td align='left'> <input type="text" name="bsRspCnvEn" size='60' value="<%=sm.getBsRspCnvEn()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 기본응답변환메시지ID : </td>
|
||||||
|
<td align='left'> <input type="text" name="bsRspCnvMsgID" size='60' value="<%=sm.getBsRspCnvMsgID()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 오류응답메시지비교값 : </td>
|
||||||
|
<td align='left'> <input type="text" name="errRspMsgCprVl" size='60' value="<%=sm.getErrRspMsgCprVl()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 오류응답변환유무 : </td>
|
||||||
|
<td align='left'> <input type="text" name="errRspCnvEn" size='60' value="<%=sm.getErrRspCnvEn()%>"></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 오류응답변환메시지ID : </td>
|
||||||
|
<td align='left'> <input type="text" name="errRspCnvMsgID" size='60' value="<%=sm.getErrRspCnvMsgID()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 다음서비스처리순서 : </td>
|
||||||
|
<td align='left'> <input type="text" name="nxtSvcPssSeq" size='60' value="<%=sm.getNxtSvcPssSeq()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> Outbound라우팅명 : </td>
|
||||||
|
<td align='left'> <input type="text" name="outbRtnNm" size='60' value="<%=sm.getOutbRtnNm()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 타임아웃값 : </td>
|
||||||
|
<td align='left'> <input type="text" name="tmoVl" size='60' value="<%=sm.getTmoVl()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 보상서비스처리코드 : </td>
|
||||||
|
<td align='left'> <input type="text" name="cpnsSvcPssCd" size='60' value="<%=sm.getCpnsSvcPssCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 추가삭제여부 : </td>
|
||||||
|
<td align='left'> <input type="text" name="supplDelYn" size='60' value="<%=sm.getSupplDelYn()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 헤더제어구분코드 : </td>
|
||||||
|
<td align='left'> <input type="text" name="hdrCtrlDstcd" size='60' value="<%=sm.getHdrCtrlDstcd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 참고클래스명 : </td>
|
||||||
|
<td align='left'> <input type="text" name="hdrRefClsName" size='60' value="<%=sm.getHdrRefClsName()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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>
|
||||||
@@ -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>
|
||||||
@@ -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'> <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' > <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"> <font color="yellow"><b>내용</b> </font></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
if(vo != null) {
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> EAI서비스코드 : </td>
|
||||||
|
<td align='left'> <input type="text" name="eAISvcCd" style="width:98%" value="<%=vo.getEAISvcCd()%>" readonly></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> EAI서버인스턴스명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="eAISvrInstNm" style="width:98%" value="<%=vo.getEAISvrInstNm()%>" readonly></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 서비스시간유무 : </td>
|
||||||
|
<td align='left' style="height:40px;">
|
||||||
|
<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"> 서비스동시사용 : </td>
|
||||||
|
<td align='left' style="height:40px;">
|
||||||
|
<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"> 서비스처리유형 : </td>
|
||||||
|
<td align='left' style="height:40px;">
|
||||||
|
<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"> Flow Control라우팅명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="flwCntlRtnNm" style="width:98%" value="<%=vo.getFlwCntlRtnNm()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 통합유형 : </td>
|
||||||
|
<td align='left' style="height:40px;">
|
||||||
|
<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"> 기동서비스구분 : </td>
|
||||||
|
<td align='left' style="height:40px;">
|
||||||
|
<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"> 서비스처리순서 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="svcPssSeq" style="width:98%" value="<%=vo.getSvcPssSeq()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 로그처리일련번호 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="logPssSno" style="width:98%" value="<%=vo.getLogPssSno()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 서비스전열로그여부 : </td>
|
||||||
|
<td align='left' style="height:40px;">
|
||||||
|
<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"> 업무구분 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="bwkCls" style="width:98%" value="<%=vo.getBwkCls()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 표준메시지사용구분 : </td>
|
||||||
|
<td align='left' style="height:40px;">
|
||||||
|
<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"> 기동시스템인터페이스유형 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="sngSysItfTp" style="width:98%" value="<%=vo.getSngSysItfTp()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이어메시지ID : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="lydMsgID" style="width:98%" value="<%=vo.getLydMsgID()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 서버로그레벨 : </td>
|
||||||
|
<td align='left' style="height:40px;">
|
||||||
|
<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"> 서비스로그레벨 : </td>
|
||||||
|
<td align='left' style="height:40px;">
|
||||||
|
<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"> 오류EAI서비스명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="errEAISvcName" style="width:98%" value="<%=vo.getErrEAISvcName()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 오류요청변환ID명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="dmndErrChngIDName" style="width:98%" value="<%=vo.getDmndErrChngIDName()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 오류요청에러필드명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="dmndErrFldName" style="width:98%" value="<%=vo.getDmndErrFldName()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 오류응답변환ID명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="rspnsErrChngIDName" style="width:98%" value="<%=vo.getRspnsErrChngIDName()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 오류응답에러필드명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="rspnsErrFldName" style="width:98%" value="<%=vo.getRspnsErrFldName()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> EAI서비스 설명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="eAISvcDesc" style="width:98%" value="<%=vo.getEAISvcDesc()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> EAI서버구분코드 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="sevrDstcd" style="width:98%" value="<%=vo.getSevrDstcd()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 그룹사코드 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="groupCoCd" style="width:98%" value="<%=vo.getGroupCoCd()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 거래처리구분 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="tranType" style="width:98%" value="<%=vo.getTranType()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 사용여부 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="useYn" style="width:98%" value="<%=vo.getUseYn()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 서비스처리정보리스트 : </td>
|
||||||
|
|
||||||
|
<%
|
||||||
|
if(vo.getSvcMsgs().size()<=0) {
|
||||||
|
%>
|
||||||
|
<td align='left' style="height:40px;"> 0건 입니다. </td>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
%>
|
||||||
|
<td align='left' > <a href="javascript:openSvcMsgs('<%= vo.getEAISvcCd() %>');"><%=vo.getSvcMsgs().size()%> 건 </a> </td>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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 인스턴스명 : </td>
|
||||||
|
<td align='left' colspan=2> <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' > <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"> <font color="yellow"><b>내용</b> </font></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
if(vo != null) {
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 서버 인스턴스명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="name" styel="width:98%" value="<%=vo.getName()%>" readonly></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 서버 아이피 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="address" styel="width:98%" value="<%=vo.getAddress()%>" readonly></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 서버 포트 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="port" styel="width:98%" value="<%=vo.getPort()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 장애극복서버명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="failoverSvr" styel="width:98%" value="<%=vo.getFailoverSvr()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 호스트명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="failoverSvr" styel="width:98%" value="<%=vo.getHostName()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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=" "/>오류메시지 코드 : </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 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' > <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"> <font color="yellow"><b>내용</b> </font></td>
|
||||||
|
</tr>
|
||||||
|
<% if(vo!=null) { %>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='180' bgcolor="#ccccff">오류메시지 코드 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="text" size="80" value="<%=vo.getMsgKey()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='180' bgcolor="#ccccff">오류메시지 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="text" size="80" value="<%=vo.getMsgTxt()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='180' bgcolor="#ccccff">조치사항 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="text" size="80" value="<%=vo.getMsgEtc()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<% } else { %>
|
||||||
|
|
||||||
|
<% } %>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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"> <font color="yellow"><b>¼ø¹ø</b> </font></td>
|
||||||
|
<td align='left' bgcolor="#003366"> <font color="yellow"> <b>¸ñ·Ï</b></font></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
for(int i=0; i<accNumArr.length; i++){
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='180' bgcolor="#ccccff">[ <%=i %> ] : </td>
|
||||||
|
<td align='left'><%=accNumArr[i] %></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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">어댑터명 : </td>
|
||||||
|
<td align='left' width='250'> <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">선택된 어댑터명 : </td>
|
||||||
|
<td align='left'> <input type="text" name="text" size="20" value="<%=vo.getName()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' bgcolor="#ccccff">초당 임계치 : </td>
|
||||||
|
<td align='left'> <input type="text" name="text" size="20" value="<%=vo.getThresholdPerSecond()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' bgcolor="#ccccff">추가 임계치 : </td>
|
||||||
|
<td align='left'> <input type="text" name="text" size="20" value="<%=vo.getThreshold()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' bgcolor="#ccccff">추가 임계치 TimeUnit : </td>
|
||||||
|
<td align='left'> <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>
|
||||||
@@ -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">인터페이스명 : </td>
|
||||||
|
<td align='left' width='250'> <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">선택된 인터페이스명 : </td>
|
||||||
|
<td align='left'> <input type="text" name="text" size="20" value="<%=vo.getName()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' bgcolor="#ccccff">초당 임계치 : </td>
|
||||||
|
<td align='left'> <input type="text" name="text" size="20" value="<%=vo.getThresholdPerSecond()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' bgcolor="#ccccff">추가 임계치 : </td>
|
||||||
|
<td align='left'> <input type="text" name="text" size="20" value="<%=vo.getThreshold()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' bgcolor="#ccccff">추가 임계치 TimeUnit : </td>
|
||||||
|
<td align='left'> <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>
|
||||||
@@ -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">업무 서비스 키 : </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 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' > <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"> <font color="yellow"><b>Property Key</b> </font></td>
|
||||||
|
<td align='left' bgcolor="#003366"> <font color="yellow"> <b>Property Value</b></font></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
if(vo != null) {
|
||||||
|
%>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 업무 서비스 키 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="bwkSvcKey" style="width:98%" value="<%=vo.getBwkSvcKey()%>" readonly></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> CICS트랜코드 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="cICSTrncd" style="width:98%" value="<%=vo.getKBHeader().getCicsTrncd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 전문요청구분코드 : (S-요청 /R-응답) </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="telgmDmndDstcd" style="width:98%" value="<%=vo.getKBHeader().getTelgmDmndDstcd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 그룹회사코드 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="groupCoCd" style="width:98%" value="<%=vo.getKBCommon().getGroupCoCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 수신거래코드 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="telgmRecvTranCd" style="width:98%" value="<%=vo.getKBCommon().getTelgmRecvTranCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 처리결과수신거래코드 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="prcssRsultTelgmRecvTranCd" style="width:98%" value="<%=vo.getKBCommon().getPrcssRtdTranCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 화면번호 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="screnNo" style="width:98%" value="<%=vo.getKBCommon().getScrenNo()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 대외기관코드 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="osidInstiCd" style="width:98%" value="<%=vo.getKBCommon().getOsidInstiCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 내외부구분코드 : (1-내부/2-외부) </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="wtinExtnlDstcd" style="width:98%" value="<%=vo.getKBCommon().getInoPartlDstcd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 원거래복원여부 : (0-불필요/1-필요) </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="ogtranRstrYn" style="width:98%" value="<%=vo.getKBCommon().getOgtranRstrYn()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 복합거래요청구분코드 : (' '-없음/T-다중전송/A-다중조합) </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="cmpxTranDmndDstcd" style="width:98%" value="<%=vo.getKBCommon().getCmpxTranDmndDstcd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 시스템운영환경구분코드 : (O-운영/S-테스트,스테이징/D-개발/R-DR) </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="sysOperEvirnDstcd" style="width:98%" value="<%=vo.getKBCommon().getSysOperEvirnDstcd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 취소구분코드 : (1-정상/3-정정취소/4-정정/5-취소) </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="cnclDstcd" style="width:98%" value="<%=vo.getKBCommon().getCnclDstcd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> EAI거래코드 </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="eAITranName" style="width:98%" value="<%=vo.getEAITranName()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> EAI내외부구분코드 </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="eaiInoPartlDstcd" style="width:98%" value="<%=vo.getKBCommon().getEaiInoPartlDstcd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 채널구분코드 </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="chnlDstcd" style="width:98%" value="<%=vo.getKBCommon().getChnlDstcd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 채널세부업무구분코드 </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="chnlDBzwkDstcd" style="width:98%" value="<%=vo.getKBCommon().getChnlDBzwkDstcd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 매체구분코드 </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="mdiaDstcd" style="width:98%" value="<%=vo.getKBCommon().getMdiaDstcd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 거래부점코드 </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="tranBrncd" style="width:98%" value="<%=vo.getKBCommon().getTranBrncd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 사용자 직원번호 </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="userEmpid" style="width:98%" value="<%=vo.getKBCommon().getUserEmpid()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 은행코드 </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="bnkCd" style="width:98%" value="<%=vo.getKBCommon().getBnkCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html> --%>
|
||||||
@@ -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"> KBMessage 전문</td>
|
||||||
|
<td align='left'> <textarea name="kbmessagetext" cols="80" rows="10"><%= kbmessagetext %></textarea></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='left' width='180' bgcolor="#ccccff"> 전문파싱</td>
|
||||||
|
<td align='left'> <textarea name="fixeddata" cols="80" rows="10"><%= fixeddata %></textarea></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='left' width='180' bgcolor="#ccccff"> XML 전문</td>
|
||||||
|
<td align='left'> <textarea name="xmldata" cols="80" rows="10"><%= xmldata %></textarea></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</html> --%>
|
||||||
@@ -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">라이프사이클 클래스명 : </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"> <font color="yellow"><b>내용</b> </font></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<%
|
||||||
|
if(vo != null ){
|
||||||
|
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 라이프사이클 클래스명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="LifecycleClass" style="width:98%" value="<%=vo.getLifecycleClass()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 로딩순서 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="LOADSEQUENCE" style="width:98%" value="<%=vo.getLoadSequence()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 라이프사이클 구분코드 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="LIFECYCLECLASS" style="width:98%" value="<%=vo.getLifeCyclUseDstcd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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">어댑터명 + 기능구분 : </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 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">어댑터명 : </td>
|
||||||
|
<td align='left' > <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">기능구분 : </td>
|
||||||
|
<td align='left' > <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"> <font color="yellow"><b>내용</b> </font></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
if(vo != null) {
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 어댑터명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="AdptIoBwkNm" style="width:98%" value="<%=adptName%>" readonly></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 메시지유형 : </td>
|
||||||
|
<td align='left' style="height:40px;">
|
||||||
|
<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"> 기능구분 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <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"> <font color="yellow"><b>Group[<%= g %>]</b> </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"> <font color="yellow"><b>Field[<%= i %>]</b> </font></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 업무필드명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <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"> 클래스명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <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"> 필드시작위치 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <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"> 필드길이 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <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"> 정상값 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="BwkColDef" style="width:98%" value="<%=group.getMessageKeyFld(i).getBwkColDef()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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 : "/> </td>
|
||||||
|
<td align='left'> <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"> <font color="yellow"> <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" > 처리 건수 : </td>
|
||||||
|
<%
|
||||||
|
for(int i=0;i<pssCntKeyLength;i++) {
|
||||||
|
verTotal[i] = verTotal[i]+Long.parseLong(pssCnt.get(pssCntKey[i]).toString());
|
||||||
|
%>
|
||||||
|
|
||||||
|
<td align='right'> <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'> <input align='right' type="text" name="recvCount2" size='10'value="0">
|
||||||
|
<td align='right' rowspan="3"> <input align='right' type="text" name="avgOfprocessTime" size='10'value="<%=avgOfprocessTime%>"> </td>
|
||||||
|
<td align='right' rowspan="3"> <input align='right' type="text" name="psvAvgOfProcessTime" size='10'value="<%=psvAvgOfProcessTime%>"> </td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' 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'> <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"> Log Sequence 별 합계 : </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"> <font color="yellow"> <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" > 처리 건수 : </td>
|
||||||
|
<%
|
||||||
|
for(int i=0;i<pssCntKeyLength;i++) {
|
||||||
|
verInPeriodTotal[i] = verInPeriodTotal[i]+Long.parseLong(pssCntInPeriod.get(pssCntKey[i]).toString());
|
||||||
|
%>
|
||||||
|
|
||||||
|
<td align='right'> <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'> <input align='right' type="text" name="recvCountInPeriod" size='10'value="0">
|
||||||
|
<td align='right' rowspan="3"> <input align='right' type="text" name="avgOfprocessTimeInPeriod" size='10'value="<%=avgOfprocessTimeInPeriod%>"> </td>
|
||||||
|
<td align='right' rowspan="3"> <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'> <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"> Log Sequence 별 합계 : </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>
|
||||||
@@ -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">프라퍼티 그룹 : </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 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' > <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"> <font color="yellow"><b>Property Key</b> </font></td>
|
||||||
|
<td align='left' bgcolor="#003366"> <font color="yellow"> <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"> <%=keys[i]%> : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="<%=keys[i]%>" style="width:98%" value="<%=vo.getProperty(keys[i])%>"></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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 : "/> </td>
|
||||||
|
<td align='left'> <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'> <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"> <font color="yellow"><b>내용</b> </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"> <font color="yellow"><b>SvcPssSeq[<%= i+1 %>]</b> </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"> RefMsgIDSeq : </td>
|
||||||
|
<td align='left'> <input type="text" name="refMsgIDSeq" size='60' value="<%=idseq%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> RefMsgID : </td>
|
||||||
|
<td align='left'> <input type="text" name="refMsgIDSeq" size='60' value="<%=refmsgid[j]%>"></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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 : "/> </td>
|
||||||
|
<td align='left'> <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통제명 : "/> </td>
|
||||||
|
<td align='left'> <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통제명구분코드 : "/> </td>
|
||||||
|
<td align='left'> <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통제구분내용 : "/> </td>
|
||||||
|
<td align='left'> <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="통제처리일시 : "/> </td>
|
||||||
|
<td align='left'> <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="거래제어처리명 : "/> </td>
|
||||||
|
<td align='left'> <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>
|
||||||
@@ -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">라우팅명 : </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 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' > <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"> <font color="yellow"><b>내용</b> </font></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
if(vo != null) {
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 라우팅명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="name" style="width:98%" value="<%=vo.getName()%>" readonly></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 동기 라우팅 URI : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="syncRoutingPath" style="width:98%" value="<%=vo.getSyncRoutingPath()%>" ></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 비동기 라우팅 URI : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="asynRoutingPath" style="width:98%" value="<%=vo.getAsynRoutingPath()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이어구분코드 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="asynRoutingPath" style="width:98%" value="<%=vo.getLayerDstcd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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">업무 서비스 키 : </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 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' > <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"> <font color="yellow"><b>Property Key</b> </font></td>
|
||||||
|
<td align='left' bgcolor="#003366"> <font color="yellow"> <b>Property Value</b></font></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
if(vo != null) {
|
||||||
|
%>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> XML : </td>
|
||||||
|
<td align='left' style="height:40px;"><%=vo.toPrettyJson(false)%></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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'> <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'> <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"> <font color="yellow"><b>내용</b> </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"> <font color="yellow"><b>Field[<%= i %>]</b> </font></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 서비스처리순서 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="svcPssSeq" style="width:98%" value="<%=sm.getSvcPssSeq()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 수동인터페이스유형 : </td>
|
||||||
|
<td align='left' style="height:40px;">
|
||||||
|
<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"> 수동업무시스템명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="psvBwkSysNm" style="width:98%" value="<%=sm.getPsvBwkSysNm()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 수동시스템ID : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="psvSysID" style="width:98%" value="<%=sm.getPsvSysID()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 수동시스템서비스코드 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="psvSysSvcCd" style="width:98%" value="<%=sm.getPsvSysSvcCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 수동시스템인터페이스유형 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="psvSysItfTp" style="width:98%" value="<%=sm.getPsvSysItfTp()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> FailOver여부 : </td>
|
||||||
|
<td align='left' style="height:40px;">
|
||||||
|
<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"> 변환유무 : </td>
|
||||||
|
<td align='left' style="height:40px;">
|
||||||
|
<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"> 변환메시지ID : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="cnvMsgID" style="width:98%" value="<%=sm.getCnvMsgID()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<!--
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 응답메시지ID : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="rspMsgRefID" style="width:98%" value="<%=sm.getRspMsgRefID()%>"></td>
|
||||||
|
</tr>
|
||||||
|
-->
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 기본응답메시지비교값 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="bsRspMsgCprVl" style="width:98%" value="<%=sm.getBsRspMsgCprVl()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 기본응답변환유무 : </td>
|
||||||
|
<td align='left' style="height:40px;">
|
||||||
|
<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"> 기본응답변환메시지ID : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="bsRspCnvMsgID" style="width:98%" value="<%=sm.getBsRspCnvMsgID()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 오류응답메시지비교값 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="errRspMsgCprVl" style="width:98%" value="<%=sm.getErrRspMsgCprVl()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 오류응답변환유무 : </td>
|
||||||
|
<td align='left' style="height:40px;">
|
||||||
|
<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"> 오류응답변환메시지ID : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="errRspCnvMsgID" style="width:98%" value="<%=sm.getErrRspCnvMsgID()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<!--
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 키관리메시지값 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="keyMgtMsgVl" style="width:98%" value="<%=sm.getKeyMgtMsgVl()%>"></td>
|
||||||
|
</tr>
|
||||||
|
-->
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 다음서비스처리순서 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="nxtSvcPssSeq" style="width:98%" value="<%=sm.getNxtSvcPssSeq()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> Outbound라우팅명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="outbRtnNm" style="width:98%" value="<%=sm.getOutbRtnNm()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 타임아웃값 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="tmoVl" style="width:98%" value="<%=sm.getTmoVl()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 보상서비스처리코드 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="cpnsSvcPssCd" style="width:98%" value="<%=sm.getCpnsSvcPssCd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 추가삭제 여부 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="cpnsSvcPssCd" style="width:98%" value="<%=sm.getSupplDelYn()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 헤더제어구분코드 - [01/02]삭제추가/추가삭제 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="cpnsSvcPssCd" style="width:98%" value="<%=sm.getHdrCtrlDstcd()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 참고클래스명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <input type="text" name="cpnsSvcPssCd" style="width:98%" value="<%=sm.getHdrRefClsName()%>"></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 타이머참고메시지ID : </td>
|
||||||
|
<td align='left' style="height:40px;"> <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;"> 0건 입니다. </td>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
%>
|
||||||
|
|
||||||
|
<td align='left' > <a href="javascript:openRefMsgID('<%=sm.getEAISvcCd() %>');"><%=sm.getRefMsgIDs().length%> 건 </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;"> 0건 입니다. </td>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
%>
|
||||||
|
|
||||||
|
<td align='left' > <a href="javascript:openCondPerRtgInfo('<%=sm.getEAISvcCd() %>','<%=sm.getSvcPssSeq()%>');"><%=sm.getCondPerRtgInfo().size()%> 건 </a> </td>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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 : </td>
|
||||||
|
<td align='left'> <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"> <font color="yellow"> <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'> <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'> <input align='right' type="text" name="recvCountInPeriod" size='10' value="0"></td>
|
||||||
|
<td align='right' rowspan="3"> <input align='right' type="text" name="avgOfprocessTime" size='10'
|
||||||
|
value="<%=avgOfprocessTime%>"></td>
|
||||||
|
<td align='right' rowspan="3"> <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'> <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"> <font color="yellow"> <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'> <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'> <input align='right' type="text" name="recvCountInPeriod" size='10' value="0"></td>
|
||||||
|
<td align='right' rowspan="3"> <input align='right' type="text" name="avgOfprocessTimeInPeriod" size='10'
|
||||||
|
value="<%=avgOfprocessTimeInPeriod%>"></td>
|
||||||
|
<td align='right' rowspan="3"> <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'> <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>
|
||||||
@@ -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="업무 구분 : "/> </td>
|
||||||
|
<td align='left'> <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"> <font color="yellow"> <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" > <font color="yellow"><b>EAI Service Code</b></font></td>
|
||||||
|
<td align='left' colspan="10"> <%=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'> <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'> <input align='right' type="text" name="recvCount2" size='10'value="0">
|
||||||
|
<td align='right' rowspan="3"> <input align='right' type="text" name="avgOfprocessTime" size='10' value="<%=avgOfprocessTime%>"> </td>
|
||||||
|
<td align='right' rowspan="3"> <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'> <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" > <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"> <input align='right' type="text" name="avgOfprocessTimeByBwk" size='10'value="<%=avgOfprocessTimeByBwk%>"> </td>
|
||||||
|
<td align='right' rowspan="3"> <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"> <font color="yellow"> <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" > <font color="yellow"> <b>EAI Service Code</b></font></td>
|
||||||
|
<td align='left' colspan="10"> <%=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'> <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'> <input align='right' type="text" name="recvCountInPeriod" size='10' value="0"></td>
|
||||||
|
<td align='right' rowspan="3"> <input align='right' type="text" name="avgOfprocessTimeInPeriod" size='10' value="<%=avgOfprocessTimeInPeriod%>"> </td>
|
||||||
|
<td align='right' rowspan="3"> <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'> <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" > <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"> <input align='right' type="text" name="sumOfprocessTimeInPeriodByBwk" size='10' value="<%=avgOfprocessTimeInPeriodByBwk%>"> </td>
|
||||||
|
<td align='right' rowspan="3"> <input align='right' type="text" name="psvSumOfProcessTimeInPeriodByBwk" size='10' value="<%=psvAvgOfProcessTimeInPeriodByBwk %>"> </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<%
|
||||||
|
}else{
|
||||||
|
%>
|
||||||
|
|
||||||
|
해당 업무 구분에 대한 거래 내역이 없습니다.
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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="동작주기 : "/> </td>
|
||||||
|
<td align='left'> <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"> <font color="yellow"><b>항목</b> </font></td>
|
||||||
|
<td align='left' bgcolor="#003366"> <font color="yellow"> <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"> Adapter Name : </td>
|
||||||
|
<td align='left'> <input type="text" name="name" size='60' value="<%=vo.getName()%>" readonly></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> Adapter 상태 : </td>
|
||||||
|
<td align='left'> <input type="text" name="name" size='60' value="<%=tester.isAlive()%>" readonly></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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"> <font color="yellow"><b>항목</b> </font></td>
|
||||||
|
<td align='left' bgcolor="#003366"> <font color="yellow"><b>설명</b> </font></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='180' bgcolor="#ccccff">현재상태 : </td>
|
||||||
|
<td align='left' style="height: 40;"> <input type="text" name="period" value="<%=status%>" readonly ></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='180' bgcolor="#ccccff">상태변경 버튼 : </td>
|
||||||
|
<%
|
||||||
|
if ("시작됨".equals(status)){
|
||||||
|
%>
|
||||||
|
<td align='left' style="height: 40;"> <input type="button" value="STOP" onclick="doStop()"></td>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='180' bgcolor="#ccccff">버튼설명 : </td>
|
||||||
|
<td> 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">버튼설명 : </td>
|
||||||
|
<td> &TransformEngine 에서 initEngine()을 실행합니다.</td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td rowspan=4 align='right' width='180' bgcolor="#ccccff">실행Manager : </td>
|
||||||
|
<td> LayoutTypeManager</td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td> FunctionManager</td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td> LayoutManager</td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td> TransformManager</td>
|
||||||
|
</tr>
|
||||||
|
</table><br>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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="변환명 : "/> </td>
|
||||||
|
<td align='left'> <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"> <font color="yellow"><b>변환규칙정보</b> </font></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
if(transform != null ){
|
||||||
|
|
||||||
|
%>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='250' bgcolor="#ccccff"> 변환규칙명 : </td>
|
||||||
|
<td align='left'> <%=transform.getName()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='250' bgcolor="#ccccff"> 변환규칙설명 : </td>
|
||||||
|
<td align='left'> <%=checkNull(transform.getDescription())%></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
} else {
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='center' colspan="2" > 요청하신 변환규칙 정보가 없습니다. </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"> <font color="yellow"><b>변환소스결과레이아웃 정보</b> </font></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
if (target != null || it.hasNext()) {
|
||||||
|
|
||||||
|
%>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='center' width='' bgcolor="#ccccff"> 소스레이아웃(2개이상일경우 콤마(,)로 구분) </td>
|
||||||
|
<td align='center' width='' bgcolor="#ccccff"> 결과 레이아웃 </td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='center'> <%=sourceName%></td>
|
||||||
|
<td align='center'> <%=target.getName()%></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
|
||||||
|
} else {
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='center' colspan="2" > 요청하신 변환소스결과레이아웃 정보가 없습니다. </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"> <font color="yellow"><b>변환아이템 정보</b> </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] %>"> 변환항목일련번호 : </td>
|
||||||
|
<td align='left'> <%=item.getSeqNo()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='250' bgcolor="<%= aBgColor[nCount%2] %>"> 변환결과항목경로명 : </td>
|
||||||
|
<td align='left'> <%=item.getResultItemPath()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='250' bgcolor="<%= aBgColor[nCount%2] %>"> 변환명령명 : </td>
|
||||||
|
<td align='left'> <%=item.getInstruction()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='250' bgcolor="<%= aBgColor[nCount%2] %>"> 변환항목기본값 : </td>
|
||||||
|
<td align='left'> <%=checkNull(item.getDefaultValue())%></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<%
|
||||||
|
nCount++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='center' colspan="2" > 요청하신 변환규칙 아이템 정보가 없습니다. </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">변환함수명 : </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"> <font color="yellow"><b>변환함수정보</b> </font></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
if(vo != null ){
|
||||||
|
|
||||||
|
%>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 변환함수명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <%=vo.getName()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 변환함수설명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <%=vo.getDescription()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 변환함수반환유형 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <%=TransformKeys.getType(vo.getReturnTypeId())%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 변환함수클래스명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <%=vo.getFunctionClass()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 변환함수유형 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <%=TransformKeys.getFunctionType(vo.getFunctionTypeId())%></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
} else {
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='center' colspan="2" > 요청하신 변환함수 정보가 없습니다. </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"> <font color="yellow"><b>LayoutItem 정보</b> </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] %>"> 변환함수파라미터일련번호 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <%=param.getSeqNo()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="<%= aBgColor[nCount%2] %>"> 변환함수파라미터명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <%=param.getName()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="<%= aBgColor[nCount%2] %>"> 변환함수파라미터설명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <%=param.getDescription()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="<%= aBgColor[nCount%2] %>"> 변환함수파라미터유형 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <%=TransformKeys.getType(param.getTypeId())%></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
nCount++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='center' colspan="2" > 요청하신 변환함수 파라메터 정보가 없습니다. </td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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\"> "+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="레이아웃명 : "/> </td>
|
||||||
|
<td align='left'> <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"> <font color="yellow"><b>Layout정보</b> </font></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
if(layout != null ){
|
||||||
|
|
||||||
|
%>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃명 : </td>
|
||||||
|
<td align='left'> <%=layout.getName()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃유형명 : </td>
|
||||||
|
<td align='left'> <%=layout.getLayoutType().getName()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃설명 : </td>
|
||||||
|
<td align='left'> <%=layout.getDescription()%></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
} else {
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='center' colspan="2" > 요청하신 Layout 정보가 없습니다. </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">
|
||||||
|
|
||||||
|
<font color="yellow"><b>LayoutItem 정보</b> </font></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
<%=str%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
--%>
|
||||||
@@ -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"> <font color="yellow"><b>Layout정보</b> </font></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
if(layout != null ){
|
||||||
|
|
||||||
|
%>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃명 : </td>
|
||||||
|
<td align='left'> <%=layout.getName()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃유형명 : </td>
|
||||||
|
<td align='left'> <%=layout.getLayoutType().getName()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃설명 : </td>
|
||||||
|
<td align='left'> <%=layout.getDescription()%></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
} else {
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='center' colspan="2" > 요청하신 Layout 정보가 없습니다. </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"> <font color="yellow"><b>LayoutItem 정보</b> </font></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
if (item != null ) {
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃항목일련번호 : </td>
|
||||||
|
<td align='left'> <%=item.getSeqNo()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃항목명 : </td>
|
||||||
|
<td align='left'> <%=item.getName()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 부모레이아웃항목 : </td>
|
||||||
|
<td align='left'> <%=item.getParent().getName()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃항목설명 : </td>
|
||||||
|
<td align='left'> <%=item.getDescription()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃항목노드유형 : </td>
|
||||||
|
<td align='left'> <%=TransformKeys.getLoutItemNodePtrnID(item.getNodeTypeId())%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃항목유형명 : </td>
|
||||||
|
<td align='left'> <%=TransformKeys.getType(item.getItemTypeId())%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃항목경로명 : </td>
|
||||||
|
<td align='left'> <%=item.getPath()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃항목길이수 : </td>
|
||||||
|
<td align='left'> <%=item.getLength()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃항목참조정보 : </td>
|
||||||
|
<td align='left'> <%=item.getRefInfo()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃항목참조정보2 : </td>
|
||||||
|
<td align='left'> <%=item.getRefOcc()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃항목발생유형구분코드 : </td>
|
||||||
|
<td align='left'> <%=item.getOccType()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃항목최대발생건수 : </td>
|
||||||
|
<td align='left'> <%=item.getOccMax()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃항목최소발생건수 : </td>
|
||||||
|
<td align='left'> <%=item.getOccMin()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃항목기본값 : </td>
|
||||||
|
<td align='left'> <%=item.getDefaultValue()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='350' bgcolor="#ccccff"> 레이아웃항목마스킹여부 : </td>
|
||||||
|
<td align='left'> <%=item.getMask()%></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
} else {
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='center' colspan="2" > 요청하신 LayoutItem 정보가 없습니다. </td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
--%>
|
||||||
@@ -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">레이아웃유형명 : </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 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' > <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"> <font color="yellow"><b>LayoutType정보</b> </font></td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
if(vo != null ){
|
||||||
|
|
||||||
|
%>
|
||||||
|
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='250' bgcolor="#ccccff"> 레이아웃유형명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <%=vo.getName()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='250' bgcolor="#ccccff"> 레이아웃유형설명 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <%=vo.getDescription()%></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' width='250' bgcolor="#ccccff"> 메시지레이아웃생성클래스 : </td>
|
||||||
|
<td align='left' style="height:40px;"> <%=vo.getGenClass()%></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
} else {
|
||||||
|
%>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='center' colspan="2" > 요청하신 LayoutType 정보가 없습니다. </td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -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">인터페이스명 : </td>
|
||||||
|
<td align='left' width='250'> <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">인터페이스명 : </td>
|
||||||
|
<td align='left'> <input type="text" name="text" size="20" value="<%=vo.getName()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' bgcolor="#ccccff">시작일자 : </td>
|
||||||
|
<td align='left'> <input type="text" name="text" size="20" value="<%=vo.getStartDateString()%>"></td>
|
||||||
|
</tr>
|
||||||
|
<tr bgcolor='white'>
|
||||||
|
<td align='right' bgcolor="#ccccff">종료일자 : </td>
|
||||||
|
<td align='left'> <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>
|
||||||
@@ -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> <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> <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> <%=threads[i].getName()%></td>
|
||||||
|
<td> <%=threads[i].isAlive()%></td>
|
||||||
|
<td> <%=threads[i].isDaemon()%></td>
|
||||||
|
<td> <%=threads[i].isInterrupted()%></td>
|
||||||
|
<td> <%=threads[i].activeCount()%></td>
|
||||||
|
</tr>
|
||||||
|
<%
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -309,14 +309,14 @@ public class ApiAdapterService extends HttpAdapterServiceSupport {
|
|||||||
result = mapper.writeValueAsString(rootNode);
|
result = mapper.writeValueAsString(rootNode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// KJBank는 요청에 대한 응답 (Sync응답, Aync 에 대한 Ack응답) 에 대하여 암호화 하지 않는다. 무조건 안한다. 따라서 아래부분은 구현은 했지만 사용하지 않는다.
|
// KJBank는 요청에 대한 응답 (Sync응답, Aync 에 대한 Ack응답) 에 대하여 암호화 하지 않는다. 무조건 안한다. 따라서 아래부분은 구현은 했지만 사용하지 않는다.
|
||||||
//result = doPostEncryption(result, transactionProp); // jwhong Encrypt
|
//result = doPostEncryption(result, transactionProp); // jwhong Encrypt
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// jwhong decrypt
|
// jwhong decrypt
|
||||||
|
|
||||||
private String doPreDecryption(String eaiBody, Properties transactionProp, HttpServletRequest request) {
|
private String doPreDecryption(String eaiBody, Properties transactionProp, HttpServletRequest request) {
|
||||||
String decryptAlgorithm = transactionProp.getProperty(ENCRYPT_ALGORITHM, "");
|
String decryptAlgorithm = transactionProp.getProperty(ENCRYPT_ALGORITHM, "");
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdap
|
|||||||
tokenType = vo.getProperty(PROP_TOKEN_TYPE, "JWT");
|
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.authenticationManager(authenticationManager);
|
||||||
endpoints.userDetailsService(userDetailsService);
|
endpoints.userDetailsService(userDetailsService);
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.eactive.eai.authserver.config;
|
package com.eactive.eai.authserver.config;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.Authentication;
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
import org.springframework.security.core.context.SecurityContextHolder;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
||||||
@@ -12,7 +13,7 @@ import javax.servlet.http.HttpServletResponse;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
public class OAuthRequestLoggingFilter extends OncePerRequestFilter {
|
public class OAuthRequestLoggingFilter extends OncePerRequestFilter {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
|
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
|
||||||
@@ -24,9 +25,10 @@ public class OAuthRequestLoggingFilter extends OncePerRequestFilter {
|
|||||||
data.setGrantType(request.getParameter("grant_type"));
|
data.setGrantType(request.getParameter("grant_type"));
|
||||||
data.setScope(request.getParameter("scope"));
|
data.setScope(request.getParameter("scope"));
|
||||||
data.setUsername(request.getParameter("username"));
|
data.setUsername(request.getParameter("username"));
|
||||||
|
data.setResource(request.getParameter("resource"));
|
||||||
|
|
||||||
RequestContextData.ThreadLocalRequestContext.set(data);
|
RequestContextData.ThreadLocalRequestContext.set(data);
|
||||||
|
|
||||||
filterChain.doFilter(request, response);
|
filterChain.doFilter(request, response);
|
||||||
} finally {
|
} finally {
|
||||||
RequestContextData.ThreadLocalRequestContext.clear();
|
RequestContextData.ThreadLocalRequestContext.clear();
|
||||||
|
|||||||
@@ -3,12 +3,13 @@ package com.eactive.eai.authserver.config;
|
|||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class RequestContextData {
|
public class RequestContextData {
|
||||||
private String clientId;
|
private String clientId;
|
||||||
private String ipAddress;
|
private String ipAddress;
|
||||||
private String grantType;
|
private String grantType;
|
||||||
private String scope;
|
private String scope;
|
||||||
private String username;
|
private String username;
|
||||||
|
private String resource;
|
||||||
|
|
||||||
// Getters and setters
|
// 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user