Release History

Data format is : YYYY-MM-DD

Version format is : major.minor.patch

4.2.2 Released ( 2014-07-15 )

  • dependency 변경
    1. license-api 변경 : 1.0.1 -> 1.1.0으로 up.
      Bouncy Castle 과 Commons Codec library 변경

      commons-codec-1.7.jar -> commons-codec-1.6.jar 으로 down.
      bcprov-jdk16-1.46.jar -> bcprov-jdk15-1.46.jar 으로 변경.

  • glue-core 모듈 수정
    1. spring mvc의 controller 추가
      • com.poscoict.glueframework.web.control.spring.GlueJsonController 추가
    2. biz controller 의 monitoring 기능 추가.
      GlueMoniHeler 변수 추가함. 생성시 applicationContext.xml의 bean 정의 유무를 확인함.
      monitoring 기능을 사용하고자 할 경우, applicationContext.xml에 moniHelper bean을 추가하면 됨.
      GlueMoniHelper 구현 클래스는 별도 모듈에 포함됨.
      • com.poscoict.glueframework.biz.control.GlueMoniHelper 추가
      • com.poscoict.glueframework.biz.control.GlueBizControllerImpl 수정
      • 사용법
        <?xml version="1.0" encoding="UTF-8"?>
        <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:task="http://www.springframework.org/schema/task"
            xsi:schemaLocation="http://www.springframework.org/schema/beans
                                http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
            <bean id="serviceManager" class="com.poscoict.glueframework.biz.control.GlueServiceManagerImpl">
                <property name="cacheManager" ref="cacheManager" />
                <property name="serviceLoader" ref="serviceLoader" />
            </bean>
            <bean id="serviceLoader" class="com.poscoict.glueframework.biz.control.GlueServiceLoader"/>
            <bean id="cacheManager" class=". . ."/>
            <bean id="moniHelper" class=". . ."/>
        </beans>
        
    3. 동적 property 설정 기능 추가
      dynamicProperties 변수를 통해 동적 property를 관리하며, 직접 접근 가능함.
      getPropertyNames() method를 통해 정적 property 의 name을 획득할 수 있음.
      • com.poscoict.glueframework.biz.activity.GlueActivity 수정
        Map<String, String> dynamicProperties;
        Set<String> getPropertyNames(){}; 
        
    4. bean 유무 확인 기능 추가.
      containsBean() method 추가
      • com.poscoict.glueframework.bean.GlueBeanFactory 수정
        boolean containsBean(String key);
        
      • 사용법
        GlueServiceManager bean = null;
        if ( GlueStaticContext.getBeanFactory().containsBean( "serviceManager" ) )
        {
            bean = GlueStaticContext.getBeanFactory().getBeanObject( "serviceManager", GlueServiceManager.class );
        }
        
    5. query loader의 query file loading 시 vfs 체크 및 log 보완
      기존에는 query 폴더가 directory인지(File의 isDirectory() 사용)만 체크함.
      protocal이 무엇인지(URL의 getProtocol() 사용) 추가로 체크해서 처리함.
      trace 레벨로 query 폴더에 대해 상세 로그 추가함.
      • com.poscoict.glueframework.dao.manager.GlueQueryLoader 수정
  • glue-schedule 모듈 수정
    1. Quartz Job 호출 activity 수정
      activity의 property인 'server-ip'와 'server-port'을 'server-address' 로 통합.
      • com.poscoict.glueframework.scheduling.activity.GlueJobCall 수정
      • 사용법
        <activity name="FireJob" class="com.poscoict.glueframework.scheduling.activity.GlueJobCall">
            <transition name="success" value="end" />
            <property name="sender" value="eventSender" />
            <property name="server-address" value="schedulerServer" />
            <property name="job-name" value="jobName" />
            <property name="job-log-no" value="requestID" />
            <property name="result-key" value="jobName_call_result" />
        </activity>
        
      • 수정전 : 다음과 같이 사용중이라면 수정이 필요합니다.
        <activity name="FireJob" class="com.poscoict.glueframework.scheduling.activity.GlueJobCall">
            <transition name="success" value="end" />
            <property name="sender" value="eventSender" />
            <property name="server-ip" value="remoteServerIP" />
            <property name="server-port" value="remoteServerPort" />
            <property name="job-name" value="jobName" />
            <property name="job-log-no" value="requestID" />
            <property name="result-key" value="jobName_call_result" />
        </activity>
        
    2. Scheduler Launch시 bean 중복 생성 방지.
      applicationContext.xml 에 정의된 bean을 먼저 생성하도록 함.
      quartz_scheduler.xml 또는 spring_schduler.xml 가 존재할 경우 bean 중복 생성 방지를 위함.
      • com.poscoict.glueframework.scheduling.server.GlueSchedulerHttpServer 수정
      • 사용법
        java -jar user-application.jar spring spring_scheduler.xml
        java -jar user-application.jar quartz quartz_scheduler.xml
        
    3. Quartz Job 및 Spring Task의 수행 실적 등록 보완
      quartz job 실행시간 계산 변경. System.currentTimeMillis() 대신에 JobExecutionContext의 getJobRunTime() 를 이용함.
      ServiceName 존재여부는 확인로직 제거함. biz controller에서 처리하도록 함.
      task 기능과 task 실행실적 관리용 logging 기능 분리.
      oracle용 수행실적 관리 db 생성 script 추가함.(SchedulerHisotry_Oracle.sql)
      • com.poscoict.glueframework.scheduling.GlueQuartzJobBean 수정
      • com.poscoict.glueframework.scheduling.task.GlueTaskScheduler 수정
      • com.poscoict.glueframework.scheduling.store.GlueScheduledJobInfoLogger 수정
      • com.poscoict.glueframework.scheduling.store.GlueScheduledTaskLogger 추가
      • 사용법 : quartz scheduler
        <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="true">
            <property name="triggers">
                . . .
            </property>
            <property name="globalJobListeners">
                <list>
                    <ref local="dblogging"/>
                </list>
            </property>
        </bean>
        <bean id="dblogging" class="com.poscoict.glueframework.scheduling.store.GlueScheduledJobInfoLogger">
            <property name="dataSource" ref="logging-ds"/>
        </bean>
        <bean id="logging-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            . . .
        </bean>
        
      • 사용법 : spring scheduler
        <bean id="glue-task-1" class="com.poscoict.glueframework.scheduling.task.GlueTaskScheduler">
            <property name="ServiceName" value="sample51-service"/>
            <property name="dataMap">
                <map>
                    <entry key="deptno" value="10"/>
                    <entry key="find" value="1"/>
                </map>
            </property>
            <property name="logger" ref="dbLogging"/>
        </bean>
        <bean id="dbLogging" class="com.poscoict.glueframework.scheduling.store.GlueScheduledTaskDBLoggerImpl">
            <property name="dataSource" ref="logging-ds"/>
        </bean>
        <bean id="logging-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            . . .
        </bean>
        
      • quartz scheduler 수정전 : 다음과 같이 사용중이라면 수정이 필요합니다.
        <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="true">
            <property name="triggers">
                . . .
            </property>
            <property name="globalJobListeners">
                <list>
                    <ref local="dblogging"/>
                </list>
            </property>
        </bean>
        <bean id="dblogging" class="com.poscoict.glueframework.scheduling.store.GlueScheduledJobInfoLogger">
            <property name="dao" ref="schedulerDao"/>
            <property name="transactionManager" ref="schedulerTx"/>
        </bean>
        
      • spring scheduler 수정전 : 다음과 같이 사용중이라면 수정이 필요합니다.
        <bean id="gluetask" class="com.poscoict.glueframework.scheduling.task.GlueTaskScheduler">
            <property name="contextMap">
                <map>
                    <entry key="ServiceName" value="sample51-service"/>
                    <entry key="deptno" value="10"/>
                    <entry key="find" value="1"/>
                </map>
            </property>
            <property name="dbLogging">
                <map>
                    <entry key="dao" value="schedulerDao"/>
                    <entry key="tm" value="schedulerTx"/>
                </map>
            </property>
        </bean>