영향도 분석 환경설정

1. 기본 설정

데이터 소스 설정

설정 파일 위치: <<$BXM_HOME>>/admin/bin/config/datasource.properties

-- Oracle
driver-classname=oracle.jdbc.OracleDriver
uri=jdbc:oracle:thin:@<<DBUrl>>:<<DBPort>>:<<SID>>
username=<<DBUserName>>
password=<<DBPassword>>

-- MySql
driver-classname=com.mysql.jdbc.Driver
uri=jdbc:mysql://<<DBurl>>:<<DBPort>>/<<database>>
username=<<dbUserName>>
password=<<dbPassword>>

BXM Web Admin이 사용하는 데이터 소스를 설정한다.

실행 쉘 설정

실행 파일 위치: <<$BXM_HOME>>/admin/bin/dniAnalyzer.sh

#!/usr/bin/ksh

# set classpath
BXM_HOME={bxmHomeDir} (1)
CLASSPATH=$BXM_HOME/admin/bin/config
APP_HOME={bxmAppOnlineHome} (2)
JAVA_BIN=$JAVA_HOME/bin/java

for f in `find $BXM_HOME/admin/bxmAdmin/WEB-INF/lib -type f -name "*.jar"`
do
   CLASSPATH=$CLASSPATH:$f
done

for f in `find $BXM_HOME/lib/bxm -type f -name "*.jar"`
do
   CLASSPATH=$CLASSPATH:$f
done

for f in `find $BXM_HOME/lib/deps -type f -name "*.jar"`
do
   CLASSPATH=$CLASSPATH:$f
done

OPT="-Xms512m -Xmx1024m -classpath $CLASSPATH "

# execute
for appName in $APP_HOME/*

do
FILE_NAME=$(basename $appName)

 $JAVA_BIN $OPT bxm.app.analyze.AppAnalyzeApplication $appName false 2>&1 > $FILE_NAME.log &
done
#$JAVA_BIN $OPT bxm.app.analyze.AppAnalyzeApplication $APP_HOME false AnalyzeResources

sleep 300
V_GREP=$(ps aux | grep AppAnalyzeApplication | grep -v grep)
FLAG=$(expr length "$V_GREP")

#waiting analyze
while ["$FLAG" != "0"]
do
 sleep 300
 V_GREP=$(ps aux | grep AppAnalyzeApplication | grep -v grep)
 FLAG=$(expr length "$V_GREP")
done

#start AfterAnalyze
 $JAVA_BIN $OPT bxm.app.analyze.AppAnalyzeApplication $appName false AfterAnalyze 2>&1 > AfterAnalyze.log &
1 BXM_HOME={bxmHomeDir}

BXM이 설치된 디렉토리를 입력한다.

2 APP_HOME={bxmAppOnlineHome}

BXM의 온라인 Home 디렉토리를 입력한다. 분석 대상이 복수일 경우에는 CSV로 입력한다.

BXM 온라인 Home 디렉토리의 기본 값은 $BXM_HOME/apps/online이다.

BXM Config 설정
BXM Web Admin의 "Admin 설정"에서 다음 값들을 확인하고 필요시 수정한다.

설정 정보
샘플(기본) 값 설명

bxm.admin.dni.include.callee

bxm.web.admin.online.*

Caller,
Callee 관계를 분석할 대상을 설정
한다.정규표현식으로 작성하며 복수일
경우 CSV로 연결한다. 해당 사항이 없을 경우는 "Na"로 입력한다.

bxm.admin.dni.exclude.callee

Na

Caller, Callee 관계를 분석할때 제외할
대상을 설정한다. 정규표현식으로 작성하며 복수일 경우 CSV로 연결한다.
해당 사항이 없을 경우는 "Na"로 입력한다. 위의 설정과 중복될 경우 "제외"
설정이 우선시된다.

bxm.admin.dni.service. executor.name

DefaultServiceExecutor

service
executor가 custom 된 경우 해당 클래스의 이름을 입력한다.

bxm.admin.dni.service. executor.info.class

bxm.app.analyze.meta.visiter. DftServiceExecutorMethod
InvocationVisitor

service executor가 custom되어 가지고 있는 meta정보가
변경된 경우 visitor class를 커스텀 하고 해당 클래스의 이름을 입력한다.

bxm.admin.dni.dynamic. query.dft.rule

bxm.app.analyze.meta.query.
DftRemoveTag, bxm.app.analyze.meta.query. DftRemoveTagRange,
bxm.app.analyze.meta.query. DftReplaceTag, bxm.app.analyze.meta.query.
DftReplaceTagRange

*.dbio 파일에서 SQL 파싱할 때, Dynamic SQL에서
태그를 삭제하고 분석가능한 SQL로 조립하기 위한 파싱 클래스를 정의하는
옵션이다. Dynamic SQL을 분석할 필요가 없는 경우는 해당 옵션을 삭제한다

2. 옵션 설정

  • 설정 방법

    key=value 형태로 입력한다. key는 admin.dni.dynamic.query.dft.rule이고, value는 Dynamic SQL의 태그를 걸러내는 Rule Class의 Full Qualified Name을 입력한다. 2개 이상일 경우 CSV(,)로 구분한다.

  • 기본 클래스 설명

    • DftRemoveTag

      if, choose, when, otherwise 태그에 해당된다. 아래와 같이 태그만 제거해서 SQL Parsing이 정상동작하게 한다.

      select emp_no from EMP_TST
      where 1=1
      < if test="empDept != null && empDept != ''" >
          and emp_dept = #{empDept}
      </if>
      
      ↓
      
      select emp_no from EMP_TST
      where 1=1
          and emp_dept = #{empDept}
    • DftRemoveTagRange

      selectKey, bind 태그에 해당된다. 아래와 같이 태그로 묶인 범위를 제거해서 SQL Parsing이 정삭동작하게 한다.

      <selectKey keyProperty="id" resultType="int" order="BEFORE">
          select SEQ_ID.nexyval FROM DUAL
        </selectKey>
        insert into Students
          (id, name , email)
        values
          (#{id}, #{name}, #{email})
      
      ↓
      
        insert into Students
          (id, name , email)
        values
          (#{id}, #{name}, #{email})
    • DftReplaceTag

      where, set 태그에 해당된다. where 태그는 WHERE 1=1로, set 태그는 SET으로 치환해 SQL Parsing이 정상동작하게 한다.

      select emp_nm from emp_tst
      <where>
      <if> and emp_no = #{empNo}</if>
      </where>
      
      ↓
      
      select emp_nm from emp_tst
      WHERE 1=1
      <if> and emp_no = #{empNo}</if>
    • DftReplaceTagRange

      foreach 태그에 해당된다. foreach로 묶인 범위를 NULL로 치환해 SQL Parsing이 정상동작하게 한다.

      SELECT emp_nm
      FROM emp_tst
      WHERE emp_dept in
      <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
              #{item}
      </foreach>
      
      ↓
      
      SELECT *
      FROM emp_tst
      WHERE emp_dept in NULL

커스터마이징 영역

"bxm.admin.dni.dynamic.query.dft.rule설정"에서 설정하는 Dynamic SQL Rule 클래스를 커스터마이징할 수 있다.

  1. BXM Web Admin 커스터마이징 소스를 연다. Install set 기준으로 CustomizingSource/WebAdmin/bxm.web.admin 프로젝트이다.

  2. bxm/web/admin/dni/analyze/sql/dft 하위에 Default Dynamic Parsing Rule 클래스가 존재하며, 동일한 레벨에 있는 custom 패키지에 IParsingRuleIntrfc 인터페이스를 implement하는 클래스를 만든다.

    public class CustomRemoveTag implements IParsingRuleIntrfc {
    
        @Override
        public String applyParsingRule(String sql) throws Exception {
            // TODO Auto-generated method stub
            return null;
        }
    
    }
  3. 메소드를 override해서 작성한다.

  4. 소스 배포와 bxm-instance-management.xml에 옵션 값을 변경해준 후 Web Admin의 WAS를 재기동한다.

    HTTPS 사용 환경에서 영향도 분석 설정

    영향도 분석의 dniAnalyzer.sh 쉘에서 BXM Web Admin으로 분석 요청을
    보내는데, 환경이 HTTPS일 경우 영향을 받는다. HTTPS 환경에서 정상 작동을
    위해 SSL 관련 설정이 필요하다.

    아래는 HTTPS 환경에서 영향도 분석을 실행할 때 필요한 설정을 추가한
    dniAnalyzer.sh 이다.

    #!/usr/bin/ksh
    
    # set classpath
    BXM_HOME={bxmHomeDir}
    CLASSPATH=$BXM_HOME/admin/bin/config
    APP_HOME={bxmAppOnlineHome}
    JAVA_BIN=$JAVA_HOME/bin/java
    
    for f in `find $BXM_HOME/admin/bxmAdmin/WEB-INF/lib -type f -name "*.jar"`
    do
       CLASSPATH=$CLASSPATH:$f
    done
    
    for f in `find $BXM_HOME/lib/bxm -type f -name "*.jar"`
    do
       CLASSPATH=$CLASSPATH:$f
    done
    
    for f in `find $BXM_HOME/lib/deps -type f -name "*.jar"`
    do
       CLASSPATH=$CLASSPATH:$f
    done
    
    SSL_PATH=<<keystore>> #인증키 위치 (1)
    SSL_PASS=password #password (2)
    SSL_CTXT=SSLv3  #SSL version (3)
    
    # execute option
    JAVA_BIN=$JAVA_HOME/bin/java
    OPT="-Xms512m -Xmx1024m -Dbxm.cacert.path=$SSL_PATH -Dbxm.cacert.pass=$SSL_PASS -Dbxm.ssl.context=$SSL_CTXT -Djavax.net.debug=ssl -classpath $CLASSPATH " (4)
    
    # execute
    for appName in $APP_HOME/*
    
    do
    FILE_NAME=$(basename $appName)
    
     $JAVA_BIN $OPT bxm.app.analyze.AppAnalyzeApplication $appName false 2>&1 > $FILE_NAME.log &
    done
    #$JAVA_BIN $OPT bxm.app.analyze.AppAnalyzeApplication $APP_HOME false AnalyzeResources
    
    sleep 300
    V_GREP=$(ps aux | grep AppAnalyzeApplication | grep -v grep)
    FLAG=$(expr length "$V_GREP")
    
    #waiting analyze
    while ["$FLAG" != "0"]
    do
     sleep 300
     V_GREP=$(ps aux | grep AppAnalyzeApplication | grep -v grep)
     FLAG=$(expr length "$V_GREP")
    done
    
    #start AfterAnalyze
     $JAVA_BIN $OPT bxm.app.analyze.AppAnalyzeApplication $appName false AfterAnalyze 2>&1 > AfterAnalyze.log &
    1 SSL_PATH

    인증키가 존재하는 위치를 Canonical Path로 입력한다.

    2 SSL_PASS

    인증서 암호를 입력한다.

    3 SSL_CTXT

    SSL Context를 입력한다. TLSv1.2, SSLv3 과 같은 컨텍스트 값을 입력한다.

    4 -Dbxm.cacert.path=$SSL_PATH -Dbxm.cacert.pass=$SSL_PASS -Dbxm.ssl.context=$SSL_CTXT -Djavax.net.debug=ssl

    java 옵션을 설정해준다. -Djavax.net.debug=ssl 옵션은 SSL 관련 로그를 볼 수 있는 옵션이며, BXM Web Admin의 WAS 환경에 셋팅해주면 Admin Log에서 SSL 관련 로그를 확인할 수 있다.

SWLab Bankware Global
  • 전체
  • BXM
  • BXCM
  • BXCP
  • BXI
제품 선택 시 더 정확한 매뉴얼 가이드를 제공해드립니다.

Copyright© Bankwareglobal All Rights Reserved.