spring Framework 개발환경 설정
FOCUS :
Eclipse + Maven + Spring Framework 개발환경 설정.
Reference :
1. http://www.oracle.com/technetwork/java/javase/downloads/index.html
2. http://www.eclipse.org/downloads
3. http://openness.tistory.com/107
4. http://tomcat.apache.org/download-70.cgi
5. http://blog.daum.net/istae0430/279
6. http://archive.apache.org/dist/tomcat/tomcat-connectors/native/
7. http://blog.doortts.com/59
8. http://alexk.springnote.com/pages/3501753#toc_2
9. http://maven.apache.org/download.html
10. http://eclipse.org/m2e/
11. http://eclipse.org/m2e/download
12. http://stackoverflow.com/questions/2921473/m2eclipse-eclipse-is-running-in-a-jre-but-a-jdk-is-required
13. pom reference ( http://maven.apache.org/pom.html)
14. http://kongkk.springnote.com/pages/8115902
15. http://sepiroth11.tistory.com/entry/SetPropertiesRuleServerServiceEngineHostContext-Setting-property-source-to-orgeclipsejstjeeserver%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%AA%85-did-not-find-a-matching-property
16. http://entireboy.egloos.com/4534698
Need to known :
The APR based Apache Tomcat Native library
Maven http://maven.apache.org/
1) How do i build my project http://www.avajava.com/tutorials/lessons/how-do-i-build-my-project.html
2) build lifecycle phase :http://cvs.peopleware.be/training/maven/maven2/buildLifecyclePhases.html#site
Spring Framework http://www.springsource.org/ ,
1) Spring Framework module 설명 : http://blog.naver.com/gigar/60121489281
spring Framework 개발환경 설정에 대해 정리해 본다.
개발 환경 설정 하는데, 왜 이리 걸리는게 많은지, 환경 설정 하다가 포기하겠당 ㅋㅋ
그래서 다시 한번 정리!!
- 개발환경은 아래와 같은 순서로 설정 (for windows 7)
1. java 설치
2. eclipse 설치.
3. tomcat 설치 + eclipse wts 설정
4. maven 설치 + eclipse m2eclipse 설치
5. spring Framework 설정
1. java 설치
아래의 URL 에서 JDK 7 download
http://www.oracle.com/technetwork/java/javase/downloads/index.html
JDK7 설치 후, 윈도우 환경변수에 JAVA_HOME 설정
JAVA_HOME --> C:\Dev\Java\jdk1.7.0
2. Eclipse(Indigo SR1) 설치
아래의 URL 에서 Eclipse IDE for Java EE Developers download
http://www.eclipse.org/downloads/
받은파일 (eclipse-jee-indigo-SR1-win32.zip)의 압축해제로 eclipse 설치
3. tomcat 설치 + eclipse wts 설정 ( 참고 : http://openness.tistory.com/107)
아래의 URL에서 tomcat 7.0 download
http://tomcat.apache.org/download-70.cgi
받은파일 압축해제로 tomcat 설치
tomcat 설치 후, 윈도우 환경변수에 CATALINA_HOME 설정
CATALINA_HOME -->D:\tomcat
Eclipse 에서 New > Other > Server > Apache Tomcat v7.0 Server 선택
tomcat installation directory -> d:\tomcat 설정
jre -> jre7 (C:\Dev\Java\jdk1.7.0) 설정
위와 같이 설정하면
하단의 Servers tab 에 Tomcat v7.0 Server at localhost [Stopped, Republish] 라고 나온다.
Tomcat v7.0 Server at localhost Start 후, 웹브라우저에 http://localhost:8080 로 실행 했을때 아래와 같이 나오면 정상
브라우저 실행후 http://localhost:8080/springTest2/test1.do 실행 시켰더니 원하는 페이지가 떴다.
tomcat 설치중 문제발생 : (참고 : http://blog.daum.net/istae0430/279)
위와 같이 tomcat 실행이 되는 건 확인 했는데 eclipse console log를 보니 아래와 같은 log가 있다. ㅜㅜ
[log]
정보: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Dev\Java\jdk1.7.0\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;...
2월 10, 2012 3:44:47 오후 org.apache.coyote.AbstractProtocolHandler init
근데 ARP 라는 넘이 머 하는 넘인지는 모르겠는데 검색 해 보니
http://archive.apache.org/dist/tomcat/tomcat-connectors/native/
가서 tcnative-1.dll(windows 의 경우) 을 받아 java.library.path 넣으란다.
그래서 v 1.1.17 을 받아 C:\Dev\Java\jdk1.7.0\bin 에 넣었더니 아래의 붉은색과 같이 log가 뜬다. 닝길 ..
[log]
2월 10, 2012 3:46:36 오후 org.apache.catalina.core.AprLifecycleListener init
정보: An older version 1.1.17 of the APR based Apache Tomcat Native library is installed, while Tomcat recommends a minimum version of 1.1.20
2월 10, 2012 3:46:36 오후 org.apache.catalina.core.AprLifecycleListener init
정보: Loaded APR based Apache Tomcat Native library 1.1.17.
2월 10, 2012 3:46:36 오후 org.apache.catalina.core.AprLifecycleListener init
정보: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
다시 v1.1.20 을 받아 C:\Dev\Java\jdk1.7.0\bin 에 넣고 Server를 실행 시켜보니 아래와 같이 버전 맞지 않는 문제가 해결 되었다. 아직 ARP 가 머 하는데 쓰는 넘인지 잘 모르겠는데, 이넘이 없어도 문제없이 실행되는 거 같다.
이 ARP라는 넘이 먼지 나중에 찾아봐야지.
[log]
2월 10, 2012 3:50:34 오후 org.apache.catalina.core.AprLifecycleListener init
정보: Loaded APR based Apache Tomcat Native library 1.1.20.
2월 10, 2012 3:50:34 오후 org.apache.catalina.core.AprLifecycleListener init
정보: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
4. maven 설치 + eclipse m2eclipse 설치
( 참고 : http://blog.doortts.com/59 , http://alexk.springnote.com/pages/3501753#toc_2)
4.1 Maven 설치 : 아래의 URL에서 Maven download
http://maven.apache.org/download.html
받은파일 압축해제로 maven 설치
maven 설치 후, 윈도우 환경변수에 M2_HOME 설정
M2_HOME -->C:\Dev\apache-maven-3.0.4
cmd 창에서 mvn -version 을 타이핑 해보면 아래와 같이 결과가 나온다.
4.2 m2eclipse 설치 ( 참고 : http://eclipse.org/m2e/, http://eclipse.org/m2e/download/)
eclipse > help > install new software 에 http://download.eclipse.org/technology/m2e/releases
를 입력하면 m2e plugin을 다운 받을 수 있다.
다운로드가 완료되면 아래와 같은 윈도우가 뜬다.
Restart Now 실행
eclipse > window > preferences > Maven > Installations에 보면 Embedded 되어 있는 Maven 버전이 3.0.2로
apache 에서 다운로드 받은 버전보다 더 낮아 add 해 주었다.
m2eclipse 문제 발생시 참고
(http://stackoverflow.com/questions/2921473/m2eclipse-eclipse-is-running-in-a-jre-but-a-jdk-is-required)
maven build 실행시 compile 문제 발생하면 참고
http://maven.40175.n5.nabble.com/Unable-to-locate-the-Javac-Compiler-Problem-td133804.html
5. spring Framework 설정
Maven을 깔았으니 eclipse maven project로 spring Framework을 설정 해 보려한다.
5.1 project 생성
1)eclipse > new > project > maven > maven project 선택
2) create a simple project (skip archetype seletion) check
Next
1) Group Id -> com.test2
2) artifact id -> springTest2
3) Packaging -> war
Finish
아래와 같은 모양으로 project 생성
pom reference ( http://maven.apache.org/pom.html)
spring framework 사용을 위해 첨부 파일과 같이 pom.xml을 만든다.
pom.xml 중 spring 과 ibatis 이외의 부분은 없어도 될거 같다.
pom.xml 을 첨부된 pom.xml 과 같이 설정 후, 아래와 같은 오류가 발생했다.
Project configuration is not up-to-date with pom.xml. Run project configuration update 라는 메세지가 있어 Project > properties > Maven > Update Project Configuration... 실행
--> 오류 가 제거 되었다.
그리고 아래 그림과 같이 Maven Dependencies 에 library가 추가 되었다..
예전엔 jar를 하나씩 다 복사해서 넣고 썼었는데 , library 관리가 참 편리해 졌다. ㅋㅋ
2) maven project를 tomcat 에 add
으미 생성한 Maven 프로젝트를 tomcat 에 add 하려고 Servers > add and remove 메뉴를 선택하면 add 할 resource가 없단다.. 그럼 내가 만들어 놓은 maven project는 tomcat에 add 할수 없다?
그래서 한참을 헤멨다..그런데 ㅋㅋ ( 참고 : http://kongkk.springnote.com/pages/8115902)
참고에 보면 project Facets를 찾아서 Dynamic Web Module 를 선택하면 된다다.
Project > properties > Project Facets > Convert to faceted form > Dynamic Web Module (check)
그리고 바로 아래에 i Further configuration available.. 에서 src/main/webapp 로 Web contents 경로를 지정했다.
그러면 아래 그림과 같이 src/main/webapp/WEB-INF가 생성되고, tomcat에 publish 가능한 project가 된다.
tomcat에 project를 추가하고 tomcat을 실행시켜보니
에고고 산넘어 산이구나 아래의 문제가 발생한다. 이건 또 머꼬?
경고: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:springTest2' did not find a matching property.
그래서 또 검색을 해 보니..다들 격고 있구나 ㅋㅋ
(참고 : http://sepiroth11.tistory.com/entry/SetPropertiesRuleServerServiceEngineHostContext-Setting-property-source-to-orgeclipsejstjeeserver%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%AA%85-did-not-find-a-matching-property)
Servers tab > Tomcat v7.0 더블클릭 > Overview 하단에 Server options 에서
Publish module contexts to separate XML files 에 check 하란다.
그리고 다시 tomcat 실행하니, 아래와 같은 경고가 또 떴다.
경고: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:springTest2' did not find a matching property.
검색중 어딘가에서 살짝 본 기억이 난다.
springTest2 바로 위의 Servers에서 server.xml 을 열어보면 하단에
<Context docBase="springTest2" path="/springTest2" reloadable="true" source="org.eclipse.jst.jee.server:springTest2"/>
부분이 있는데 source="org.eclipse.jst.jee.server:springTest2" 형식을 tomcat이 지원하지 않아서 그런다고 한다.
더 진행해 보고, spring Framework이 동작하지 않으면 다시 이유를 찾아봐야겠다.
3) web.xml , dispatcher-servlet.xml , controller , jsp
web.xml , dispatcher-servlet.xml , controller, jsp 모두 만들고 tomcat을 실행하니 또 아래와 같이 오류 발생
심각: Exception starting filter encodingFilter
java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:252)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:98)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4562)
at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5240)
at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5235)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
검색해 보니 결국은 spring Framework library가 WEB-INF/lib에 없어서 발생한 문제다.
(참고 : http://entireboy.egloos.com/4534698)
eclipse 설정을 통해 해결 가능한데 다음과 같이 하면 된다.
Project > properties > Deployment Assembly > add button > java Build Path Entries 선택 그리고 Next
Maven dependencies 선택 하면 아래 그림과 같이 설정된다.
Maven Dependencis -> WEB-INF/lib가 새로 생성 된것
설정을 마치고 tomcat을 다시 실행 시켰더니 아래와 같이 log msg가 뜨지만 "INFO" Level 이라 그냥 지나갔다.
정보: validateJarFile(D:\Dev\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\springTest2\WEB-INF\lib\geronimo-servlet_2.5_spec-1.2.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
휴우~
중간 중간의 고비를 잘 넘기고 spring framework으로 만들어진 간단한 페이지가 떴다.
아직 잘못 설정되어 있는 부분이 있을 수 있지만 , spring Framework을 하나씩 더 알아가면서 바꾸면 될것 같다.
간단하게 Hello 하나 찍는 건데 꽤 긴 시간을 들였다. 에공~~
늙어도 개발을 취미삼아 조금씩 할 수 있었으면 좋겠는데 , 어째 개발 환경 설정이 점점더 복잡해 지고 있는 것 같다.
<츨처 : sunny side up)