Anyframe CHANGELOG ========================== http://www.anyframejava.org Changes in version 4.5.1 (2010-08-05) ------------------------------------- * 소스 코드 및 테스트 코드 변경 - QueryService에서는 Spring JdbcTemplate을 이용하여 정의된 StoredProcedure를 실행하기 위해 "OUT" 또는 "INOUT" 타입의 인자에 대해 SqlOutParameter 객체로 처리하고 있는데 이 과정에서 무조건 typeName을 셋팅하고 있다. 이 로직을 다음과 같이 개선하여 Oracle11g에서도 StoredProcedure가 정상적으로 처리될 수 있도록 하였다. : "OUT" 또는 "INOUT" 타입의 인자가 "DISTINCT, STRUCT, JAVA_OBJECT, ARRAY, REF" 타입인 경우에 대해서는 typeName을 셋팅해주고 그렇지 않을 경우에는 typeName을 셋팅하지 않도록 로직 보완 - Weblogic Server에서 웹개발 영역 단순화를 위해 추가된 Anyframe Tag Library 사용 시 tag body content 처리할 수 있도록 태그 클래스 수정 * 참조 라이브러리 변경 - N/A * 추가된 기능 - 기존의 Servlet Spec. 2.5에서뿐만 아니라 Servlet Spec. 2.4를 지원하는 WAS에서도 Tiles2의 EL Expression 기능 사용 가능 - 웹개발 영역 단순화를 위해 제공되는 공통 콘트롤러를 사용하여 서비스의 메소드를 호출할 때 여러 개의 메소드 파라미터 자동 바인딩 기능 * 해결된 이슈 목록 [ANFRM-209] Servlet 2.4 Spec.을 지원하는 WAS에서 Tiles2의 EL expression 기능을 사용할 수 있도록 기능 추가 [ANFRM-208] SimpleWeb 기능 중 데이터 바인딩 시 자동 설정되는 input/output 어트리뷰트 명을 전체 소문자 형태가 아닌 CamelCase 형태로 변경 [ANFRM-207] Weblogic Server에서 SimpleWeb tag library 사용 시 tag body content 처리 오류 조치 [ANFRM-206] Oracle10g(ojdbc6.jar)를 사용하여 QueryService의 executeBySQL 메소드를 이용하는 경우 프로시져 호출 시 return 결과가 null 인 현상 [ANFRM-205] Plugin 샘플에서 checkbox에 대한 디폴트 값 처리 방식 변경 [ANFRM-142] 웹 프레임워크 강화 기능 가이드 작성 및 리뷰 사항 반영 [ANFRM-126] 공통 콘트롤러를 통해 서비스를 호출할때 service parameter argument 제약 문제 해결 필요 Changes in version 4.5.0 (2010-07-15) ------------------------------------- * 소스 코드 및 테스트 코드 변경 - Plugin 설치로 생성되는 샘플 코드의 도메인을 Product Management에서 MovieFinder로 변경하고 Tiles 기반으로 재구성 - Spring 3 기반으로 Plugin Resources 재구성 - MiPQueryService execute() 메소드의 리턴 타입 변경(void -> DatasetList) * 참조 라이브러리 변경 - 기존의 spring-2.5.6.jar, spring-test-2.5.6.jar, spring-webmvc-2.5.6.jar, spring-agent-2.5.6.jar, spring-aspects-2.5.6.jar, spring-webmvc-portlet-2.5.6.jar, spring-tomcat-weaver-2.5.6.jar, spring-modules-validation-0.9.jar, spring-webmvc-struts-2.5.6.jar 파일을 다음과 같이 변경 : spring-aop-3.0.3.RELEASE.jar, spring-asm-3.0.3.RELEASE.jar, spring-beans-3.0.3.RELEASE.jar, spring-context-3.0.3.RELEASE.jar, spring-core-3.0.3.RELEASE.jar, spring-expression-3.0.3.RELEASE.jar, spring-jdbc-3.0.3.RELEASE.jar, spring-test-3.0.3.RELEASE.jar, spring-tx-3.0.3.RELEASE.jar, spring-web-3.0.3.RELEASE.jar, spring-webmvc-3.0.3.RELEASE.jar, spring-orm-3.0.3.RELEASE.jar, spring-context-support-3.0.3.RELEASE.jar, spring-aspects-3.0.3.RELEASE.jar, spring-instrument-3.0.3.RELEASE.jar spring-instrument-tomcat-3.0.3.RELEASE.jar, spring-jms-3.0.3.RELEASE.jar, spring-oxm-3.0.3.RELEASE.jar, spring-webmvc-portlet-3.0.3.RELEASE.jar, spring-struts-3.0.3.RELEASE.jar - 기존의 spring-binding-2.0.7.RELEASE.jar 파일을 spring-binding-2.0.9.RELEASE.jar 파일로 버전 변경 - 기존의 spring-js-2.0.7.RELEASE.jar 파일을 spring-js-2.0.9.RELEASE.jar 파일로 버전 변경 - 기존의 spring-webflow-2.0.7.RELEASE.jar 파일을 spring-webflow-2.0.9.RELEASE.jar 파일로 버전 변경 - 기존의 aspectjrt-1.6.4.jar 파일을 aspectjrt-1.6.8.jar 파일로 버전 변경 - 기존의 aspectjweaver-1.6.5.jar 파일을 aspectjweaver-1.6.8.jar 파일로 버전 변경 - 기존의 jpa-1.0.jar 파일을 hibernate-jpa-2.0-api-1.0.0.Final.jar 파일로 변경 - 기존의 junit-4.4.jar 파일을 junit-4.7.jar 파일로 버전 변경 - 기존의 xercesImpl-2.6.2.jar 파일을 xercesImpl-2.8.1.jar 파일로 버전 변경 - 기존의 servlet-api-2.4.jar 파일을 servlet-api-2.5.jar 파일로 버전 변경 - 기존 hibernate-3.3.1.GA.jar, hibernate-annotations-3.4.0.GA.jar, hibernate-commons-annotations-3.1.0.GA.jar 파일을 hibernate-3.5.3-Final.jar 파일로 버전 변경 - 기존의 cxf-2.1.3.jar 파일을 cxf-2.2.7.jar 파일로 버전 변경 - 기존의 cxf-manifest-2.1.3.jar 파일을 cxf-manifest-2.2.7.jar 파일로 버전 변경 - 기존의 FastInfoset-1.2.2.jar 파일을 FastInfoset-1.2.7.jar 파일로 버전 변경 - 기존의 geronimo-javamail_1.4_spec-1.3.jar 파일을 geronimo-javamail_1.4_spec-1.6.jar 파일로 버전 변경 - 기존의 stax-api-1.0.1.jar 파일을 stax-api-1.2.jar 파일로 버전 변경 - 기존의 jaxb-impl-2.1.jar 파일을 jaxb-impl-2.1.12.jar 파일로 버전 변경 - 기존의 jaxb-xjc-2.1.7.jar 파일을 jaxb-xjc-2.1.12.jar 파일로 버전 변경 - 기존의 jettison-1.0.1.jar 파일을 jettison-1.2.jar 파일로 버전 변경 - 기존의 jetty-6.1.9.jar 파일을 jetty-6.1.21.jar 파일로 버전 변경 - 기존의 jetty-util-6.1.9.jar 파일을 jetty-util-6.1.21.jar 파일로 버전 변경 - 기존의 jsr311-api-0.8.jar 파일을 jsr311-api-1.0.jar 파일로 버전 변경 - 기존의 wss4j-1.5.4.jar 파일을 wss4j-1.5.8.jar 파일로 버전 변경 - 기존의 wstx-asl-3.2.6.jar 파일을 wstx-asl-3.2.9.jar 파일로 버전 변경 - 기존의 XmlSchema-1.4.2.jar 파일을 XmlSchema-1.4.5.jar 파일로 버전 변경 - 기존의 xmlsec-1.4.0.jar 파일을 xmlsec-1.4.3.jar 파일로 버전 변경 - 기존의 spring-security-acl-2.0.4.jar 파일을 spring-security-acl-3.0.2.RELEASE.jar 파일로 버전 변경 - 기존의 spring-security-core-2.0.4.jar 파일을 spring-security-core-3.0.2.RELEASE.jar 파일로 버전 변경 - 기존의 spring-security-taglibs-2.0.4.jar 파일을 spring-security-taglibs-3.0.2.RELEASE.jar 파일로 버전 변경 - commons-digester-1.8.jar 파일 추가 - javax.inject-1.jar 파일 추가 - validation-api-1.0.0.GA.jar 파일 추가 - joda-time-1.6.jar 파일 추가 - tiles-api-2.2.1.jar, tiles-core-2.2.1.jar, tiles-jsp-2.2.1.jar, tiles-servlet-2.2.1.jar, tiles-template-2.2.1.jar, tiles-el-2.2.1.jar 파일 추가 - hibernate-validator-4.0.2.GA.jar 파일 추가 - ant-1.7.1.jar 파일 추가 - cxf-xjc-boolean-2.2.7.jar 파일 추가 - cxf-xjc-bug671-2.2.7.jar 파일 추가 - cxf-xjc-dv-2.2.7.jar 파일 추가 - cxf-xjc-ts-2.2.7.jar 파일 추가 - js-1.7R1.jar 파일 추가 - oro-2.0.8.jar 파일 추가 - xmlbeans-2.4.0.jar 파일 추가 - spring-security-config-3.0.2.RELEASE.jar 파일 추가 - spring-security-web-3.0.2.RELEASE.jar 파일 추가 - displaytag-1.2.jar 파일 제거 - 기존 apache-log4j-extras-1.0.jar 파일 제거 - 기존 org.springplugins.web-1.0.0.jar 파일 제거 - 기존 tagishauth-1.0.3.jar 파일 제거 - 기존 geronimo-servlet_2.5_spec-1.2.jar 파일 제거 - 기존 hessian-3.1.3.jar 파일 제거 - 기존 jetty-6.1.9.jar 파일 제거 - 기존 jetty-util-6.1.9.jar 파일 제거 - 기존의 abdera-extensions-html-0.4.0-incubating.jar 파일 제거 - 기존의 abdera-server-0.4.0-incubating.jar 파일 제거 - 기존의 jdom-1.0.jar 파일 제거 - 기존의 stax-utils-20060502.jar 파일 제거 - 기존의 spring-security-core-tiger-2.0.4.jar 파일 제거 * 추가된 기능 - Number 타입에 대한 Spring 3 Custom Converter (StringToNumberConverterFactory) 제공 - Spring 3 New Feature에 대한 매뉴얼 컨텐츠 보완 - Spring 3에서 새롭게 선보인 REST Style 웹어플리케이션 구성을 위한 Plugin 제공 - 웹개발 영역 단순화를 위해 추가된 기능을 활용한 SimpleWeb-Map, SimpleWeb-VO, SImpleWeb-JSON Plugin 제공 - 기존 Foundation Plugin을 Anyframe 기반 기본 프로젝트 구조를 갖춘 basic archetype과 Spring/SpringMVC/Query 활용 리소스를 포함한 foundation plugin으로 분리하여 구성 - 설치된 Plugin의 버전을 최신 버전으로 update할 수 있는 기능 - 로컬에 존재하는 버전별 Plugin Catalog 파일을 최신 내용으로 업데이트할 수 있는 기능 - 로컬에 설치된 Plugin의 Master Version을 확인할 수 있는 기능 * 해결된 이슈 목록 [ANFRM-203] MiPQueryService의 execute() 메소드 Multi Row Dataset에 대한 처리 [ANFRM-198] MiPlatform CSV방식 일 경우에 사용하는 MiPPrintWriterRowCallbackHandler의 기능 추가 [ANFRM-197] QueryService 설정시 property 적용 순서에 따른 의존성 이슈 [ANFRM-183] ANT를 이용해서 라이브러리 검색 시, MAVEN과 동일한 방식으로 검색되도록 한다.(ex.json-lib-2.2.3-jdk15.jar) [ANFRM-169] PropertiesService 에서 관리하는 Property 들의 key 목록 도출시 오류 [ANFRM-168] QueryService를 통해 수행되는 쿼리문의 Result Local Mapping시 Column 처리 로직 수정 [ANFRM-164] PropertiesService 에서 관리하는 Property 파일에 대한 Reload 기능 추가 Changes in version 4.2.0 (2010-05-18) ------------------------------------- * 소스 코드 및 테스트 코드 변경 - QueryService의 ReflectionResultSetMapper 클래스 내에서 조회 결과값을 특정 객체로 매핑할 때 조회된 칼럼 목록에 대해 loop을 돌면서 해당 객체가 가진 모든 attribute를 대상으로 하여 매핑 정보를 찾고 있음. 이럴때 매핑을 위해 특정 객체가 가진 attribute가 많은 경우 최대 칼럼 개수 * attribute 개수만큼의 loop이 수행되어 성능에 영향을 미침. 따라서, 특정 객체가 가진 attribute 정보를 Map으로 처리하고 Map의 contains() 메소드를 활용하는 형태로 로직을 개선함. - 다국어 지원을 위해 메새지 리소스 파일의 인코딩 설정을 지정하여 사용할 수 있도록 하는 EncodingResourceBundleMessageSource 클래스 추가됨. (유니코드로 메시지 리소스 파일 저장 불필요해짐) * 참조 라이브러리 변경 - N/A * 추가된 기능 - N/A * 해결된 이슈 목록 [ANFRM-154] QueryService 매뉴얼 보완 (about 복합객체일 경우 Example, ResultSetMapper 활용 Example) [ANFRM-150] QueryService 내의 조회 결과값 매핑 로직 개선 [ANFRM-147] Maven 기반의 Plugin 설치시 발생된 오류에 대해 Warning 레벨의 Log 처리 [ANFRM-144] Source 내 Exception message 출력 수정 [ANFRM-122] Gen에서 Plugin 설치시 라이브러리만 설치한 경우를 식별할 수 있도록 Meta 정보 추가 [ANFRM-121] 일부 Plugin 설치시 BUILD SUCCESSFUL 메시지 없이 작업이 완료되는 현상 조치 [ANFRM-119] Transaction Service 매뉴얼 컨텐츠 내에 JEUS 기반일 경우 설정 추가 [ANFRM-117] DynamicHibernateService 매뉴얼 컨텐츠 내에 NativeSQL 관련 상세 설명 추가 [ANFRM-101] PluginInfo 내에 SampleCode 포함 여부를 나타내는 속성 추가 정의 Changes in version 4.1.0 (2010-02-25) ------------------------------------- * 소스 코드 및 테스트 코드 변경 - Anyframe의 모든 소스/테스트 코드에 대해 JDK 1.5 기반에서 컴파일. 따라서, Anyframe 4.1.0 이후부터 Anyframe 기반 어플리케이션은 JDK 1.5 이상에서만 동작 가능함. - 4.0.0에서 제공된 모든 Plugin의 리소스들을 Annotation 기반으로 변경 - QueryService 사용시 PagingSQLGenerator를 필수적으로 지정하도록 하기 위해 QueryServiceImpl, RiaQueryServiceImpl 내에 afterPropertiesSet() 메소드 추가 구현함. 사용하는 DB에 적합한 PagingSQLGenerator가 없을 경우 별도로 구현하거나 QueryService에서 제공하는 DefaultPagingSQLGenerator를 사용할 수 있음. 단, DefaultPagingSQLGenerator를 사용하는 경우 쿼리 조건에 해당하는 전체 데이터를 모두 fetch한 이후 ResultSet Cursor를 움직여서 특정 페이지에 속한 목록 정보를 조회하게 되므로 어플리케이션의 성능에 심각한 영향을 초래할 수 있음을 인지해야 함. - QueryService에서 ResultSet으로부터 검색 결과를 꺼낼때 칼럼명이 아닌 칼럼Index를 활용하도록 로직을 변경함으로써 목록 조회시 성능 개선 * 참조 라이브러리 변경 - N/A * 추가된 기능 - Flex 기반 비즈니스 레이어 개발시 공통적으로 활용할 수 있도록 기본 CRUD 기능을 구현한 anyframe.ria.flex 추가 - 특정 어플리케이션에 대한 모니터링 기능을 수행하기 위해 필요한 리소스를 설치해주는 Monitoring Plugin 추가 - mvn anyframe:list 수행시 설치가능한 Plugin 정보를 선택적으로 조회할 수 있도록 showall property 추가 - WebServices를 통해 통신하기 위해 JAXB Databinding을 수행하는 경우 JAXB 표준에서 List 형태의 타입은 지원하나 Map 형태의 타입에 대해서는 Databinding을 기본적으로 지원하지 않음. 따라서, Map 형태의 타입을 이용하여 Databinding하기 위해서는 XmlAdapter 클래스 추가 개발이 필요함. 이를 위해 공통적으로 활용할 수 있는 CXFMapAdater 클래스를 생성하여 anyframe.common에 추가 * 해결된 이슈 목록 [ANFRM-78] MiPQueryServiceTest 소수점이 포함된 double type 테스트케이스 추가 [ANFRM-76] ResultSet으로부터 검색 결과를 꺼낼때 칼럼명이 아닌 칼럼Index를 활용하도록 로직 수정 [ANFRM-75] QueryService 사용시 반드시 SQLGenerator를 지정하도록 로직 변경 [ANFRM-74] 설치 가능한 plugin 목록 조회 기능에 option을 추가하여 정보를 간단화하여 볼 수 있도록 개선 [ANFRM-73] Apache CXF Plugin에 포함되어 있던 CXF Map Adaptor를 Anyframe Common 기능으로 추가 [ANFRM-72] anyframe:inplace 수행시 uninstall된 plugin의 dependency 라이브러리가 삭제되지 않고 남아 있는 현상 [ANFRM-71] Annotation 기반으로 Plugin 리소스 변경 [ANFRM-70] DynamicHibernateService를 통해 mapping XML load시 XML Parsing 에러 [ANFRM-69] API 문서 한글 깨짐 [ANFRM-68] Monitoring Plugin을 위한 템플릿 정의 Changes in version 4.0.0 (2009-11-18) ------------------------------------- * 소스 코드 및 테스트 코드 변경 - QueryService를 이용하여 목록 조회 결과를 특정 객체에 매핑할 때 반복 수행되는 로직을 제거하기 위해, SQLLoader에서 한 번 처리한 ResultMapping 정보를 관리하도록 로직 보완. 따라서 조회되는 칼럼 정보가 쿼리문 실행시마다 변경될 수 있는 동적 쿼리문에 대해서는 별도로 Mapper 클래스를 정의해 주어야 함. . Result가 Map일 경우 기본 적용되는 DefaultCallbackResultSetMapper 클래스 추가 . Result가 VO일 경우 기본 적용되는 DefaultReflectionResultSetMapper 클래스 추가 . ColumnUtil 클래스 추가 . QueryServiceImpl, SQLLoader 클래스의 ResultSetMapper 관련 로직 보완 - StoredProcedure 수행시 CamelCase, Lower, Upper와 같은 Result Mapping Style을 적용할 수 있도록 MappingStyleColumnMapRowMapper 클래스 추가 - 모든 소스 프로젝트에 대한 Maven Parent Project 변경 (anyframe.root -> anyframe.common.maven.root) * 참조 라이브러리 변경 - 기존의 log4j-1.3alpha8.jar 파일을 log4j-1.2.15.jar 파일로 버전 변경 - 기존의 velocity-1.5.jar 파일을 velocity-1.6.2.jar 파일로 버전 업그레이드 - 기존의 commons-pool-1.4.jar 파일을 commons-pool-1.5.3.jar 파일로 버전 업그레이드 - 기존의 aspectjweaver-1.6.4.jar 파일을 aspectjweaver-1.6.5.jar 파일로 버전 업그레이드 - 기존의 jasperreports-2.0.2.jar 파일을 jasperreports-3.1.0.jar 파일로 버전 업그레이드 * 추가된 기능 - Plugin 기반으로 프로젝트에 최적화된 개발 환경을 구성할 수 있도록 Anyframe 설치 방법 대폭 개선 . Plugin 15종 제공 - foundation, cache, cxf, dynamicmodule, hibernate, jasper, miplatform, mipsample, remoting, scheduling, security, spring-optional, struts, test, webflow . Maven을 이용한 Plugin 설치/삭제, Plugin 설치 현황 조회 기능 등 제공 - Miplatform 기반에서 기본 CRUD 기능을 수행하는 서비스 클래스들을 제공하며 QueryService를 이용하는 DAO 클래스들도 함께 제공 - Dynamic Hibernate Service를 통해 Dynamic Native SQL 처리할 수 있도록 기능 추가 - 기존 온라인 상에서만 접근 가능하던 매뉴얼을 PDF 형태로 제공할 수 있도록 전면 개편 * 해결된 이슈 목록 [CORE-130] MiPQuerySerivce 사용 시 Query에 정의된 Column이 Dataset에 없을 경우 Message처리 오류 [CORE-129] MiPQueryService에서 Dataset row의 status와 상관없이 insert/update/delete 가능한 메소드 추가 [CORE-128] QueryService 기반에서 조회 결과 매핑시 칼럼명을 Camel-Case 형태로 변경하는 로직에서 실행 시간이 많이 소요되는 현상 제거 [CORE-127] MiPQueryService에 Callablestatement 처리 기능 추가 [CORE-125] Properties Service에서 properties 파일 내에 정의된 정보를 읽어들일때, '\,' 와 같이 정의되었음에도 ','가 escape 되지 않음 [CORE-124] IdGenerationService에서 DataSource Connection을 직접 Handling하지 않도록 로직 보완 [CORE-123] Miplatform 기반에서 비즈니스 레이어 개발시 공통으로 활용할 수 있는 Anyframe Ria Mip 서비스 추가 [CORE-122] QueryService에서 Stored procedure 수행 시 mapping style 적용 필요함 [CORE-121] Transfer Object 객체 내에 boolean type의 attribute가 있을 경우 getter 를 찾지 못해 NULL 셋팅됨. [CORE-120] 객체를 이용하여 batch로 CUD 수행시 칼럼값이 NULL로 셋팅되는 현상 발생 [CORE-118] Basis Service QueryDAOUtil 클래스 내 메소드에서 예외처리 메시지 처리 필요 [CORE-117] Basis Service의 Service와 DAO 클래스 디폴트 생성자 필요 [CORE-116] MiPQueryServie의 update메소드 실행 순서의 문제 수정