영향도 분석 환경설정

1. 기본 설정

데이터 소스 설정

설정 파일 위치: <<$BXM_HOME>>/admin/bxmAdmin/WEB-INF/classes/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/all_analyze.sh

#!/bin/bash

# set classpath
BXM_HOME=$BXM_HOME (1)
CLASSPATH=$BXM_HOME/admin/bxmAdmin/WEB-INF/classes
APP_HOME=$BXM_HOME/admin/bin/targets (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

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

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


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

for appName in $APP_HOME/*

do
FILE_NAME=$(basename $appName)

 RET= $JAVA_BIN $OPT bxm.app.analyze.AppAnalyzeApplication $appName false 2>&1 > $FILE_NAME.log
 RET=$?
 echo "$appName analyze finished with [$RET]"
done
#$JAVA_BIN $OPT bxm.app.analyze.AppAnalyzeApplication $APP_HOME false AnalyzeResources

exit 0
1 BXM_HOME=${BXM_HOME}

환경 변수로 설정된 BXM_HOME을 읽어온다.

2 APP_HOME=$BXM_HOME/admin/bin/targets

$BXM_HOME/admin/bin 하위에 분석할 프로젝트의 상위 디렉토리를 targets 심볼릭 링크로 지정한다.

심볼릭 링크는 $BXM_HOME/admin/bin/targets에서 ln -s {분석할 디렉토리} targets로 지정한다.

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을 분석할 필요가 없는 경우는 해당 옵션을 삭제한다

bxm.admin.dni.omm.method.analyze

false

omm타입 메소드 분석 여부를 설정한다.

bxm.servlet.dni.auto.analyze

true

실시간 분석 사용 여부를 설정한다.

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

Copyright© Bankwareglobal All Rights Reserved.