본문 바로가기

프로그래밍/Spring

Eclipse Indigo 64 Bit를 이용한 전자정부 프레임워크 설정 및 예제 프로젝트 만들기...(2)

지난 글에선 Eclipse Indigo 64 Bit에 전자정부 프레임워크 플러그인을 설치하는 과정을 살펴보았다. 이제 전자정부 프레임워크 설치를 마쳤으니 예제 프로젝트를 하나 만들어보도록 하자. 전자정부 프레임워크는 자체적으로 게시판 샘플 프로젝트를 제공하고 있다. 이 예제 프로젝트를 이용해서 전자정부 프레임워크에서 프로젝트를 만들때 신경써야 하는 것들을 몇가지 언급하도록 하겠다. 그리고 이 글에서는 프로젝트의 소스 코드 분석 같은 내용은 다루질 않는다. 어디까지나 전자정부 프레임워크를 이용해서 프로젝트를 만들때의 생각해야 하는 것들만 다룰것이다.

 

이제 본격적으로 만들어보도록 하자. File -> New -> eGovFrame Web Project 를 선택하면 다음의 대화상자가 나타난다

 

 

Target Runtime은 프로젝트를 만들기 전에 전자정부 프레임워크에 Tomcat 7.0을 셋팅해줘서 이것을 사용했다. Maven Setting을 보면 Artifact Id는 프로젝트 이름과 동일한 이름으로 셋팅이 되며 Group Id를 반드시 지정해줘야 하는데 별도의 Naming Rule은 존재하지 않으나 흔히 자신이 만드는 프로젝트의 자바 클래스의 Base Package를 생각해서 만들게 된다. 즉 자신이 만드는 프로젝트의 최상위 자바 클래스 Package가 com.terry.egovtest라면 com.terry가 Group Id, egovtest가 Atrifact Id가 된다. 이렇게 설정한 후 Next 버튼을 클릭하면 다음의 대화 상자를 보게 된다.

 

 

 

처음 이 대화상자가 화면에 나타날때는 Generate Example 체크 박스에 체크가 해제되어 있는 상태로 나타날것이다. 그러나 Generate Example 체크 박스에 체크 설정을 하면 위의 그림과 같이 여러 이미지들과 자바 파일등 여러 파일들이 보이게 된다. 이렇게 체크가 된 상태에서 Finish 버튼을 클릭하면 프로젝트 생성이 완료되며 생성된 프로젝트 부분만 보면 다음과 같이 나타나게 된다.

 

 

이렇게 프로젝트 생성 과정을 모두 마쳤다. 전자정부 프레임워크를 처음 설치해서 프로젝트를 만드는 사람이라면 생각보다 시간이 오래 걸릴것이다. 왜냐면 이 시점에 이 프로젝트에서 사용하는 Spring을 비롯한 모든 라이브러리를 Maven을 이용하여 중앙 저장소에서 자기 PC의 로칼 저장소로 다운로드 하는 과정을 거치기 때문이다. 물론 이 이후로 또 프로젝트를 만들때는 스프링 라이브러리 등이 자신의 로칼 저장소에 있기 때문에 다시 중앙 저장소에서 다운 받지 않고 자신의 로칼 저장소에서 가져오기 때문에 빨리 만들어진다. 근데 먼가 이상하지 않나? 전자정부 프레임워크에서 제공하는 샘플 프로젝트를 만들었는데 아무런 코드도 고치지 않았는데도 에러가 있음을 나타내는 빨간색 X자 마크가 보인다. 무슨 에러일까? 에러 내용을 확인하기 위해 Eclipse의 Probolem 탭을 보면 다음과 같은 내용이 있다

 

 

그림의 글씨가 잘 안보이는 분들을 위하여 따로 글을 적자면 Java Compiler level does not match the version of the installed Java Project facet. 이렇게 되어 있다. 어디선가 자바 컴파일러 버전이 맞지 않아 에러가 발생했다는 것인데 이 원인은 pom.xml에 있다. pom.xml을 열면 여러 xml 태그들이 있는데 그 중 다음과 같은 내용이 있다.

 

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-compiler-plugin</artifactId>
	<configuration>
		<source>1.5</source>
		<target>1.5</target>
		<encoding>UTF-8</encoding>
	</configuration>
</plugin>

 

이전글에서 나는 자바 버전 1.7을 사용한다고 했었다. 근데 여기에서 설정된 버전은 1.5 다. 이 부분에서 맞지가 않아 발생했던 것이다. 1.5로 된 부분을 1.7로 수정을 한 뒤에 pom.xml을 저장하자. 그리고 프로젝트인 egovtest를 마우스 우클릭 하여 나타나는 메뉴에서 Maven -> Update Project... 메뉴를 선택하면 아래의 그림과 같은 화면이 나타난다. 아래 그림 같이 egovtest가 체크된 상태로 OK 버튼을 클릭하면 프로젝트 업데이트 과정을 거치게 되며 에러 부분이 고쳐지게 된다.

 

 

그리고 해줘야 할 설정이 있다. 지금 이 설정대로도 배포하는데 있어서는 문제가 없다. WAR 파일로 만들어서 WAS로 배포하는 작업은 지금도 가능하다. egovtest를 마우스 우클릭 하여 나타나는 메뉴에서 Run As -> Maven install을 하면 프로젝트가 만들어진 폴더의 target 폴더에 현재의 내용들을 넣은 war 파일을 만들어주게 된다. 그러나 이것은 배포할때의 얘기지 우리가 개발할때의 얘기는 아니다. 무슨 말이냐면 우리가 일상적으로 개발할때는 Eclipse에 등록된 WAS에 프로젝트를 추가해서 개발하는 방법으로 진행한다. 그러나 Maven 프로젝트의 경우는 단순히 이렇게 할 경우 Eclipse에서 WAS를 시작하는 단계에서 클래스를 못찾았다고 에러가 나올것이다. 우리가 Maven을 통해 가져온 라이브러리가 WAS에서 인식을 할려면 WEB-INF의 lib 디렉토리에 있어야 한다. Maven으로 WAR 파일을 만들때는 pom.xml이 관련된 내용을 대신 해 주지만 지금과 같은 상황에서는 그 작업을 해주는 것이 아무것도 없다. 그래서 이렇게 개발하는 과정에서 WEB-INF의 lib 디렉토리로 우리가 가져온 라이브러리들이 들어가도록 설정을 해주어야 한다. egovtest를 마우스 우클릭 하여 나타나는 메뉴에서 Properties 메뉴를 선택하면 나오는 화면에서 왼쪽의 여러가지 항목중 Deployment Assembly를 선택하면 다음의 화면이 나타난다.

 

 

이 화면에서 빨간색 박스로 둘러쳐진 Add 버튼을 클릭하면 다음의 대화 상자가 나타난다

 

 

위의 그림과 같이 Java Build Path Entries를 선택하고 Next 버튼을 클릭하면 다음의 화면이 나타난다

 

 

위의 그림과 같이 Maven Dependencies를 선택하고 Finish 버튼을 클릭하여 작업을 마무리 지으면 최종적으로 다음과 같이 Maven Dependencies 항목이 추가된 Deployment Assembly 화면을 볼수 있게 된다

 

 

 

이제 기본적인 셋팅은 마쳤고 우리가 Eclipse에서 웹프로젝트 개발할때 늘상하듯이 현재 만든 egovtest 프로젝트를 Eclipse에 등록된 WAS에 추가한뒤 해당 WAS를 시작하면 Eclipse의 Console 탭에 Springframework 관련 로그들이 까만글씨로 쭉쭉 올라가는것을 볼수 있게 된다. 그러나 WAS 시작은 되어도 실제로 웹브라우저에서 http://localhost:8080/egovtest/ 를 입력해 들어가보면 Could not open JDBC Connection for transaction; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (socket creation error) 이런 무시무시(?)한 문구를 보게 된다. 이 이유는 이게 게시판 프로젝트이기 때문에 관련 DB를 설정해줘야 하는데 관련 DB를 동작 시키지 않아서 그런것이다. 샘플 프로젝트에서는 hsqldb, mysql, oracle에서 연동되어 실행될수 있도록 테이블 생성 스크립트와 데이터 스크립트를 제공하고 있다. 그것은 egovtest 프로젝트의 DATABASE 폴더에 가면 관련 스크립트가 있으며 이에 대한 구체적인 Springframework 설정 파일은 egovtest 프로젝트 밑의 src/main/resources -> egovframework -> spring -> context-datasource.xml을 보면 관련 데이터베이스별 설정들이 있다. 그것을 보고 거기에 맞춰서 설정해주면 된다. 기본 설정은 hsqldb 이므로 hsqldb를 먼저 실행시켜줘서 hsqldb 안에 테이블이 만들어지고 초기 데이터가 들어간 뒤에 Eclipse에 있는 WAS를 시작해주면 된다. hsqldb를 실행하는 것은 Command 창에서 다음과 같이 runhsqldb.cmd를 실행해주면 샘플 프로젝트에 맞춰서 관련작업을 일괄적으로 해준다

 

 

위와 같이 hsqldb를 실행해주고 Eclipse의 WAS를 시작한뒤 http://localhost/egovtest/ 로 들어가면 게시판 샘플 화면을 직접 눈으로 볼수 있다. 

 

이상으로 Eclipse 64 비트에서 전자정부 프레임워크 설치 및 예제 프로젝트 만들기를 진행했다. 그러나 이전에도 얘기했다시피 이렇게 설정한 것과 전자정부 프레임워크에서 직접 배포하는 배포본은 차이가 있다. 예를 들면 olc 사이트에서 kenu님이 전자정부 프레임워크 강의를 하신 동영상을 보면 hsqldb를 실행할때 Eclipse에 별도의 Command 창 플러그인이 설치되어 있어서 위의 설명과 같이 별도의 Command 창을 열어서 실행하는 방법이 아닌 Eclipse에서 직접 실행하는 방법이 있었으나 여기에서는 어떤 플러그인인지를 몰라서 그렇게 하지를 못했다. 또 SVN 같은 버전관리 플러그인도 설치가 되어 있질 않다. 전자정부 프레임워크 배포판에는 Tomcat 6.0이 같이 배포되나 여기서는 그렇게하지 않고 그냥 Eclipse 만 갖고 진행했다. 아무튼 배포판과는 달리 이런 여러가지 차이점이 있으나 가볍게 전자정부 프레임워크를 구성하고자 하는 사람에게는 도움이 되리라 생각한다. 다음에는 전자정부 프레임워크에 git을 연동하여 버전관리 하는 법을 다룰 생각이다.

 

※ 추가된 내용

okjsp의 kenu님이 댓글을 달아주셔서 관련 내용을 추가한다. 위에 잠깐 언급했던 eclipse에서 직접 command 창을 열어주는 plugin의 이름이 pathtool 이라 알려주셨다. eclipse marketplace에서 pathtool로 검색이 되며 이를 설치하면 되는데 이것을 설치할 때 나오는 체크 항목 3가지를 모두 체크하고 설치하면 설치시 에러가 발생한다. 이유는 마지막 체크 항목이 eclipse와 subversion을 연동하는 plugin인 subclipse와 의존관계가 있기 때문에 만약 subeclipse를 사용하지 않는다면   마지막 것에 대한 체크를 빼고 설치하면 된다. 그러나 어차피 subversion과 연동을 하는 경우가 많기 때문에 eclipse marketplace에서 subclipse를 검색해서 설치하는 것을 추천한다.