====== 실행환경 Migration 가이드 (3.9 -> 3.10) ====== 표준프레임워크 3.10는 기존 표준프레임워크 3.X와의 호환성을 염두해두고 실행환경의 버전 업그레이드를 진행하였으나, \\ 전체 오픈소스SW 업그레이드에 따라 일부 변경이 필요합니다. 또한, 각 프로젝트의 상황 및 환경에 따라서 버전 업그레이드에 따른 \\ 충돌, 버그, 불안정성이 발생할 수도 있으니 충분한 테스트 후 진행하시기 바랍니다. ===== 업그레이드 개요 ===== 표준프레임워크 3.10는 JDK 1.7이 필요합니다. \\ 이에 따라 우선 관련된 WAS 등 적용되어 있는 SW 등이 JDK 1.7을 지원하는지 확인 및 JDK 업그레이드를 수행하십시오. ===== 업그레이드 방법 ===== ==== 1. 실행환경 library 변경 ==== === 1-1. Maven을 사용하는 경우 === Maven을 사용하는 경우 프로젝트에서 사용하는 pom.xml 파일을 수정하여 업그레이드를 진행할 수 있습니다. \\ 기본적으로 표준프레임워크 실행환경에서 사용되는 오픈소스 라이브러리들만을 업그레이드 하고자 하는 경우 \\ pom.xml 파일에서 egovframework.rte 패키지 아래에 있는 라이브러리들의 버전만 3.10.0으로 업그레이드 해주면 됩니다. 변경 전 (예) egovframework.rte egovframework.rte.psl.dataaccess 3.9.0 변경 후 (예) egovframework.rte egovframework.rte.psl.dataaccess 3.10.0 만약 표준프레임워크의 버전을 property를 사용하여 일괄적으로 관리하는 경우 property를 3.10.0으로 변경합니다. \\ property의 이름은 프로젝트에 따라 다를 수 있습니다. 변경 전 (예) 4.3.22.RELEASE 3.9.0 변경 후 (예) 4.3.25.RELEASE 3.10.0 === 1-2. 간소화 서비스 설정 변경 === 표준프레임워크에서 제공하는 간소화 서비스인 Spring Security 설정 간소화, Session 방식 접근제어, Crypto 간소화를 업그레이드 하시는 경우 변경된 내용을 확인하시기 바랍니다. \\ * Spring Security 설정 간소화 변경 사항([[egovframework:rte3.10:fdl:server_security:xmlschema|상세보기]]) * 스키마정의(XSD) 파일명 변경 변경 전 http://www.egovframe.go.kr/schema/egov-security/egov-security-3.7.xsd 변경 후 http://maven.egovframe.go.kr/schema/egov-security/egov-security-3.10.0.xsd * 설정 속성 추가 : errorIfMaximumExceeded, alwaysUseDefaultTargetUrl, cacheControl, csrfAccessDeniedUrl 속성 추가 * Session 방식 접근제어 변경 사항([[egovframework:rte3.10:fdl:access|상세보기]]) * 스키마정의(XSD) 파일명 변경 변경 전 http://www.egovframe.go.kr/schema/egov-access/egov-access-3.9.xsd 변경 후 http://maven.egovframe.go.kr/schema/egov-access/egov-access-3.10.0.xsd * Crypto 간소화 변경 사항([[egovframework:rte3.10:fdl:crypto|상세보기]]) * 스키마정의(XSD) 파일명 변경 변경 전 http://www.egovframe.go.kr/schema/egov-crypto/egov-crypto-3.8.xsd 변경 후 http://maven.egovframe.go.kr/schema/egov-crypto/egov-crypto-3.10.0.xsd ==== 2. BeanUtils 관련 변경 ==== BeanUtils 라이브러리 버전이 변경됨에 따라 BeanMap 클래스를 사용하는 경우 다음과 같은 코드 변경이 필요합니다. 변경 전 (예) Map introspected = new BeanMap(vo); for (String key : introspected.keySet()) { if (key.equals("dn") || key.equals("class") || introspected.get(key) == null || introspected.get(key).equals("")) continue; ContainerCriteria c = query().where(key).is(String.valueOf(introspected.get(key))); criteria.and(c); } 변경 후 (예) Map introspected = new BeanMap(vo); for (Object key : introspected.keySet()) { if (key.equals("dn") || key.equals("class") || introspected.get(key) == null || introspected.get(key).equals("")) continue; ContainerCriteria c = query().where((String) key).is(String.valueOf(introspected.get(key))); criteria.and(c); } ===== 기타 알 수 없는 충돌이 발생하는 경우 ===== 프로젝트에 따라서 기존에 사용하던 라이브러리, 코드, WAS, DB 등과의 충돌이 발생할 수 있습니다. \\ 알 수 없는 충돌이 발생하고 해결이 어려운 경우 표준프레임워크센터에 프로젝트의 환경 및 에러메시지를 포함하여 문의를 주시기 바랍니다.