반응형
SMALL

1. 호환성 인증용 샘플 제작 및 인증절차 확인

2. eGov 고객용 샘플 제작

 

 

호환성확인을 받은 sw의 연동가이드 문서를 참조하면 인증용 샘플은 앞서 확인한 전자정부프레임워크 기본 샘플에 솔루션을 붙이는 것과 비슷하다. UI의 차이정도만 있을 뿐, 데이터도 그대로 사용하고 CRUD 도 간단하게 연결하면 되어서 큰 문제가 없음.

 

가장 중요한 작업은 사실 상 eGov 고객용 샘플 제작이 메인이다.

기존에 eGov 고객 배포 샘플이 있고, 3.10 버전으로 제작되었다.

어쨌든 가장 좋은 방식은 기존에 작성된 샘플에서 버전만 올려서 사용하는 것인데... 여러가지로 시도해보기로 했다.

 

 

결론) 3.10 -> 4.2 버전으로 마이그레이션하기.

 


▼ 시도1. 붙여넣기(실패)

더보기

pom.xml을 비교해서 따져봐야함.

우선 껍데기는 대충 실행 완료인 것 같고....

음.... 우선 두가지를 만들어보자.

 

1) 3.10 샘플을 그대로 옮겨서 실행해보기!

 

기본 패키지랑 기존이랑 비교해봄

 

1차 시도 : 프로젝트 두개 띄워놓고 그대로 옮겨보기

잘 안들어간다

 

백업을 위해서 workspace 그대로 들어가서 압축파일을 만들어버리면 나중에 프로젝트 import는 압축파일을 package Explorer 에 던져놓기만 하면 된다.

 

기존 dispatcher-servlet.xml 비교해서 붙여넣기


  
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<context:component-scan base-package="egovframework">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="webBindingInitializer">
<bean class="egovframework.example.cmmn.web.EgovBindingInitializer"/>
</property>
</bean>
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<property name="interceptors">
<list>
<ref bean="localeChangeInterceptor" />
</list>
</property>
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
<!-- 쿠키를 이용한 Locale 이용시 <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/> -->
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="language" />
</bean>
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="cmmn/egovError"/>
<property name="exceptionMappings">
<props>
<prop key="org.springframework.dao.DataAccessException">cmmn/dataAccessFailure</prop>
<prop key="org.springframework.transaction.TransactionException">cmmn/transactionFailure</prop>
<prop key="org.egovframe.rte.fdl.cmmn.exception.EgovBizException">cmmn/egovError</prop>
<prop key="org.springframework.security.AccessDeniedException">cmmn/egovError</prop>
</props>
</property>
</bean>
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="1"
p:viewClass="org.springframework.web.servlet.view.JstlView"
p:prefix="/WEB-INF/jsp/egovframework/example/" p:suffix=".jsp"/>
<!-- For Pagination Tag -->
<bean id="imageRenderer" class="egovframework.example.cmmn.web.EgovImgPaginationRenderer"/>
<bean id="paginationManager" class="org.egovframe.rte.ptl.mvc.tags.ui.pagination.DefaultPaginationManager">
<property name="rendererType">
<map>
<entry key="image" value-ref="imageRenderer"/>
</map>
</property>
</bean>
<!-- /For Pagination Tag -->
<mvc:view-controller path="/cmmn/validator.do" view-name="cmmn/validator"/>
</beans>

 

 

다행히 주석이 잘 달려있음


  
<!-- 패키지 내 Controller, Service, Repository 클래스의 auto detect를 위한 mvc 설정 -->
<context:component-scan base-package="egovframework">

 

 

이건 3.10과 동일하게 주석처리함


  
<!-- 서블릿컨네이너상의 exception에 대한 오류 페이지를 연결하는 mvc 설정-->
<!--
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="cmmn/egovError"/>
<property name="exceptionMappings">
<props>
<prop key="org.springframework.dao.DataAccessException">cmmn/dataAccessFailure</prop>
<prop key="org.springframework.transaction.TransactionException">cmmn/transactionFailure</prop>
<prop key="org.egovframe.rte.fdl.cmmn.exception.EgovBizException">cmmn/egovError</prop>
<prop key="org.springframework.security.AccessDeniedException">cmmn/egovError</prop>
</props>
</property>
</bean>
-->

 

 

이건 3.10에만 있고 주석처리되어있음


  
<!-- 로그인 체크가 필요한 URL과 로그인 여부를 체크해준다 -->
<!--
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/cop/com/*.do"/>
<mvc:mapping path="/cop/bbs/*Master*.do"/>
<mvc:mapping path="/uat/uia/*.do"/>
<mvc:exclude-mapping path="/uat/uia/actionLogin.do"/>
<mvc:exclude-mapping path="/uat/uia/egovLoginUsr.do"/>
<bean class="egovframework.com.cmm.interceptor.AuthenticInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
-->

 

이건 3.10에 있음. 4.2에 추가해줌


  
<!-- json 관련 설정 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="0">
</bean>
<bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" p:contentType="application/json;charset=UTF-8">
</bean>
<!-- json 관련 설정 끝-->

 

 

그 다음 web-inf 아래에 있는 web.xml 비교해서 추가해주기

 

3.10에 이렇게 쓰여있는거 주석만 넣어주기


  
<!-- 템플릿 소스에서는 아래의 필터사용 대신 JSP 출력시 <c:out> 태그를 사용하는 것을 기본정책으로 한다 -->
<!-- egovframework.rte.ptl.mvc.filter.HTMLTagFilter egovframework.com.cmm.filter.HTMLTagFilter-->

 

3.10에 있는 session-timeout 추가해주기


  
<session-config>
<session-timeout>600</session-timeout>
</session-config>

 

 

나머진 동일함.

 

당연한거겠지만... 구조가 다르고 단순히 3.9 -) 3.10 이수준의 업그레이드가 아니라 메인 버전이 업그레이드 되면서 변경된 부분들이 많았다.

SQL 부분도 문제지만 java 설정값들을 다 맞춘다는게 바보같은 생각이었음...

이쯤 하다가 다른 방법을 찾아보기로 함.

 


 

▼ 시도2. 3.10에서 4.0, 4.0에서 4.1... 한단계씩 올리기

 

좀 더 확인해보니 버전을 한단계씩 올릴 수 있도록 마이그레이션 페이지가 있는것을 확인했다.

https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rtemigration4.0

 

egovframework:rtemigration4.0 [eGovFrame]

표준프레임워크 4.0는 Spring Framework 5.3.6 버전을 지원가능하게 업그레이드를 진행하였으나, 전체 오픈소스SW 업그레이드에 따라 일부 변경이 필요합니다. 또한, 각 프로젝트의 상황 및 환경에 따

www.egovframe.go.kr

 

3.10 에서 4.0으로 올리는 것이 가장 복잡하고, 4.0에서 4.1이나 4.1에서 4.2로 올리는 것은 비슷하다.

 

 

사실상 pom.xml 수정만 하는 것 같음.

사실상 크게 바뀐건 두개.

버전 숫자를 변경하는 것과 패키지 명이 egovframework에서 org.egorframe.rte로 변경되었다.

 

표준프레임워크 4.0.0 버전부터 실행환경의 패키지명을 org.egovframe.rte로 변경하였으므로, 실행환경을 import한 소스에 변경된 패키지명을 사용하시기 바랍니다.
표준프레임워크 개발환경에서 Search 기능에서 기존의 패키지명인 egovframework.rte 로 검색한 후,
변경할 패키지명인 org.egovframe.rte로 일괄로 변경하여 사용할 수 있습니다.

 

 

일괄 변경 해보자.

 

 

 

이처럼 실행환경의 패키지명을 전부 search 해서 replace 해주는 작업을 한다.

 

 

또한 4.0에서 4.1, 4.2로 마이그레이션 하는 것도 문서를 보고 동일하게 진행한다.

 

 

 

마지막으로 eclipce 버전이 기존것임을 확인해서 4.2 버전으로 아예 실행파일 자체를 대치해주었다.

3.10 의 이클립스에서는 java compiler가 14까지밖에 안나왔음. 근데 이제 4.2로 덮어써서 워크스페이스를 변경하니까 17까지 뜸. 

jdk 버전도 올려야하는데 3.10 실행환경으로는 17까지 올릴 수가 없음. eclipse 폴더 자체를 4.2 버전으로 덮어쓰기 하니 버전이 잘 올라갔다. 

 

 

17로 변경하고 maven clean 하면 다시 1.8 디폴트로 변경되니 17로 맞춘 뒤 install을 해준다.

 

빌드 성공됨.

반응형
LIST
반응형
SMALL

전자정부프레임워크 란?

 

전자정부 프레임워크는 행정안전부 산하 한국정보화진흥원에서 만든 웹 기반 어플리케이션 프레임워크다.

정부 및 공공기관, 공기업 등의 웹사이트에서 자주 쓰이는 공통 기능들을 java Spring프레임워크를 기반으로 미리 템플릿화하여 만들어 놓은 것이다.

쉽게 말해 공공사업에 적용되는 개발프레임워크의 "표준 정립"으로 응용 SW 표준화, 품질 및 재 사용성 향상을 목표로 한다.

 

전자정부 프레임워크는 다양한 정부기관 발주 사업의 필수 요구사항이며, 다양하게 사용되는 프레임워크이다. 이에 따라 egovframework 버전도 계속해서 업데이트 되고 있으며, 현 시점 가장 최신 버전은 2024년 2월 28일에 업데이트 된 4.2이다.

 

가장 최신버전인 4.2.0

 

 

전자정부프레임워크의 호환성 확인 서비스

 

전자정부프레임워크는 호환성확인 서비스를 제공하며, 다양한 민간 분야의 솔루션들이 전자정부 표준프레임워크와 함께 활용이 될 수 있도록 전자정부 표준프레임워크와 상용 솔루션 간에 연동이 가능한지 확인하는 유료 서비스이다.

 

기존에 7 제품이 3.5 버전에서 호환성 인증 받았으며, 이번에 8 제품 호환성 인증을 준비하는 프로젝트를 진행하게 되었다.

더불어 기존에 제공되던 eGov 샘플을 가장 최신버전인 4.2.0으로 버전을 업그레이드하고, 추가된 기능에 대한 샘플을 제공하기로 했다.

 

1. 호환성 인증용 샘플 제작 및 인증절차 확인

2. eGov 고객용 샘플 제작

 

 

eGovFramework 4.2 프로젝트 생성

4.2 부터는 spring boot를 사용할 수 있지만, 우선은 spring 기본 프로젝트를 생성하여 만들어보기로 했다.

 

 

egovframework:dev4.2:gettingstarted [eGovFrame]

본 가이드는 전자정부 표준프레임워크 기반의 단순한 응용프로그램(HelloWorld)를 직접 실습해 봄으로써 빠른 시간 내에 전자정부 프레임워크의 기본 기능을 파악하기 위하여 제공한다. 본 가이드

www.egovframe.go.kr

 

사이트에 접속하여 4.2.0버전의 개발환경을 설치한다.

이클립스가 설치되고, 처음에 실행될 때 아래 이미지가 띄워진다.

 

프로젝트를 생성한다.

 

Group Id를 설정한다.

groupId는 당신의 프로젝트를 모든 프로젝트 사이에서 고유하게 식별하게 해 주는 것이다.따라서, groupId에는 네이밍 스키마를 적용하도록 한다.groupId는 package 명명 규칙을 따르도록 한다.즉, 최소한 당신이 컨트롤하는 도메인 네임이어야 한다.하위 그룹은 얼마든지 추가할 수 있다.예: org.apache.maven, org.apache.commons

출처 : https://johngrib.github.io/wiki/groupId-artifactId/

 

 

 

 

 

구조가 이렇게 되어있으니 egovframework로 하자.

 

 

샘플도 만들 수 있네 이게 원래 기존에 있던 그건가보다.

우리 샘플에도 있던?

 

생성 완료

 

처음 구조
Context root 확인

context root가 프로젝트 명과 동일하게 되어야 한다.

 

이클립스에서 프로젝트를 생성하면 자동으로 server.xml에 추가되어 서버구동하면 자동으로 잡히는 경로이다. 

 

예를 들어 프로젝트 이름이 eGovTemplate 이면 

 

위와 같이 설정했을 때 http://localhost:8080/edGovTemplate/index.do 로 접속된다.

 

[실행 전 체크해야 할 것]

1.project facets

java 1.8

 

톰캣은 8.0.36 install 해서 4.2 폴더에 그대로 넣어줌

 

환경 조성 했으면 서버 추가

 

서버 더블클릭해서 정보 확인

 

 

Timeouts 시간 늘려서 로딩 더 길게 할 수 있게 해주고 포트 정보도 안겹치게 바꿔줌.

 

프로젝트 실행해본다

 

 

이러면 eGov의 기본 샘플이 나오는데 모양이 다음과 같다.

 

 

모양이 누가봐도 기본 게시판 모양이쥬?

 

카테고리명 클릭하면 수정도 가능함. 기본적인 CRUD가 구현되어 있는 것.

 

 

 

등록 버튼을 눌러서 항목  추가도 가능

 

 

앗...기존꺼랑 group id 비교해보니까 다르네...

변경해주자

[group Id 변경]

프로젝트 우클릭 > refactor > rename maven artifact > 이름 변경

 

Group Id를 수정해준다.

 

 

반응형
LIST
반응형
SMALL

+ Recent posts

반응형
LIST