JAVA Framework

금요일, 7월 22, 2005

이클립스 Tip : 복사/붙여넣기 보다 편한 코드 블럭 이동

이동할 블럭을 선택한 후 ALT+UP, ALT+DOWN 으로 쉽게 이동할 수 있다. 모르면 손발이 고생 ^^

원문 : Javalobby - Java J2EE Programming Forums - Eclipse: Minimize Cut/Paste Messes with the Move Lines Shortcut Keys

화요일, 7월 12, 2005

MyEclipse + Tomcat + Oracle oci dirver 사용시 문제 해결

MyEclipse의 tomcat launcher를 이용한 톰캣 실행환경에서는 오라클 oci 드라이버 사용시 java.lang.UnsatisfiedLinkError: no ocijdbc9 in java.library.path 예외가 발생한다.

이문제를 해결하는 방법은...


Window -> Prefrence -> my MyEclipse -> Application Servers -> Tomcat 5 -> Paths : Append to library path 에 다음 네개의 디렉토리를 추가한다.

lib - C:/oracle/ora92/jdbc/lib
lib - C:/oracle/ora92/lib
bin - C:/oracle/ora92/jdk/jre/bin
bin - C:/oracle/ora92/bin


환경 : eclipse 3.1, myeclipse 4.0m2, oracle 9.2 client, oracle 10g(서버)

관련 tread :
MyEclipse picking up Tomcat Library Path :: MyEclipse

수요일, 7월 06, 2005

Implementors Eclipse Plugin

Plugin homepage : Implementors Plugin - Usage

Spring framework 등을 사용하다 보면 많은 interface를 만들게되고 구현 class를 작성하게 된다. 이때 이클립스 자체에서는 interface와 구현 class간의 이동을 지원해주지않기 때문에 불편한 점이 있는데 이를 보완해주는 플러그인이다.
물론 구현 class에서 interface로의 이동도 지원한다.

Interface --> Class : ALT+F3
Class --> Interface : CTRL+ALT+F3

플러그인 url : http://eclipse-tools.sourceforge.net/updates/

금요일, 6월 03, 2005

Maven + IDEA 웹개발 (JSF, Spring, Hibernate) - #1 프로젝트 구성

Maven을 선택한 이유
appfuse를 바탕으로 ant + eclipse를 기반으로 프로젝트 구성을 하면서 점점 더 복잡해져 가는 build.xml 파일과 프로젝트에서 사용하는 라이브러리가 많아 질수록 ant 환경과 eclipse 환경을 각각 설정해주어야 했다. 자동화를 위한 환경이 옥상옥이 된셈이다. 이런 작업은 머리가 아플만큼 복잡해져갔고 개발툴과 빌드툴(ant)이 효율적으로 통합되는 대안을 찾게되었다.

ant를 사용하는 것보다 maven을 사용하게되면 프로젝트 관리를 훨씬 직관적이고 단순화할 수 있을뿐만 아니라 빌드를 관리한 ant의 기능을 넘어서 코딩, 테스트, 리포트, 배포에 이르는 개발 과정 전체를 maven을 통해 관리함으로써 총괄적인 프로젝트 관리가 가능해진다.
내가 느끼는 maven의 매력은 무엇보다도 깔끔한 단순함이다.

Maven 개념 잡기

Project management: Maven makes it easy(한국어 번역)
원문 : http://www-106.ibm.com/developerworks/java/library/j-maven/

Developing with Maven

maven magic

Maven 설치

Maven home에서 maven 최신버젼의 zip 파일을 다운받아서 압축을 푼다.
MAVEN_HGOME 환경 변수를 maven 설치 경로로 설정하고 path 환경변수에 MAVEN_HOME/bin을 추가한다.

다음과 같이 maven을 실행하여 설치가 정상적인지 확인해보자.

$maven -h
도움말을 보여준다.
$maven -P
사용가능한 모든 goal을 보연준다.

ms windows를 운영체제인 경우 cygwin을 사용하면 명령어 사용이 편리하다.

프로젝트 생성

공용 라이브러리를 위한 하나의 서브프로젝트와 하나의 웹 서브프로젝트를 포함하는 멀티프로젝트 형태로 생성해본다.


$mkdir joyple
$mkdir joyple/framework
$mkdir joyple/web-study
$cd joyple
$maven genapp
$cd framwork
$maven genapp
$cd web-study
$maven genapp


genapp goal은 기본적인 디렉토리 구조와 project.xml, project.properties 파일을 생성해주어 프로젝트 시작을 도와준다.
각각의 디렉토리에 project.xml, project.properties 파일이 생성되어 있는 것을 확인할 수 있을 것이다.
개발을 시작할 수 있는 프로젝트 구성이 이미 갖추어진 것이다.

Maven + IntelliJ IDEA 통합
eclipse나 idea, netbeans와 같은 통합개발툴 의존에 관한 개인적인 소견을 밝히자면, 전적으로 개발툴에 의존하는 것은 프로젝트 전체 보다는 코딩 레벨에 집중되어 숲을 보지 못하는 우를 범하기 쉽고 프로젝트 규모가 커지면 개발툴이 무거워지면서 코딩 및 개발 생산성이 현저하게 떨어진다. 그렇다고 ant, maven과 같은 빌드툴 기반으로 텍스트 에디터로 모든 코딩을 진행하는 것은 마치 산속에 들어가 화전을 일구고 사는 것과 같다고 본다.
지나치면 모자른 것만 못하다. 그렇다고 모자른 것이 최선이 될 수는 없다고 생각한다.

주관적인 판단으로 최선의 선택은 코딩, 빌드, 테스트, 문서, 배포에 이르는 개발 단계에서 코딩은 IDEA나 eclipse와 같은 툴을 사용하고 빌드~배포는 maven을 사용하여 체계화하고 자동화하는 것이다.
내가 최초 버젼부터 사용해온 eclipse가 아닌 IDEA를 선택한 이유는 툴에 대해 잡스러운 신경을 끄고 개발해야할 프로젝트에 집중하기 위해서이다. 때론 딱딱한 규율과 형식, 질서가 더 자유스럽게 느껴질때도 있는 듯하다.

잡설은 그만하고 본론으로 들어가자.
maven 플러그인들중에는 IDEA 프로젝트 및 모듈 파일을 생성해주는 Maven IntelliJ IDEA 플러그인이 있다.


maven.multiproject.type=war

web-study 서브프로젝트의 project.properties 파일에 위 변수를 추가한다. idea 모듈 생성시 프로젝트를 j2ee web 모듈로 생성하기 위해서이다.


[~/joyple]$maven idea:multiproject

메인프로젝트 디렉토리에는 *.iws, *.ipr 파일을 생성하고 서브프로젝트 디렉토리에는 *.iml 파일을 생성한다.
*iws는 IDEA 워크스페이스, *.ipr은 프로젝트, *.iml은 모듈을 의미한다.

이제 IDEA에서 코딩을 할 준비까지 모두 끝났다.

덤으로 IDEA내에서 maven goal을 실행하고 project.xml 파일 편집도 도외주는 IDEA 플러그인인 Mevenide IDEA를 설지해두자.

eclipse 사용자라면 maven eclipse 플러그인을 참고하자.

hello world

hello world를 출력하는 jsp 파일 하나로 구성된 작은 웹어플리케이션을 개발해보자.
이 섹션에서 사용할 maven 플러그인은 war 플러그인이다.

IDEA 웹환경을 먼저 설정하자.
IDE settings(File / Settins /IDE)을 열어 Application Servers설정에서 Tomcat 설정을 추가한다.
Run/Debug Configurations(Run / Edit configurations)을 열어 Tomcat Server 탭에서 tomcat_local이라고 이름을 주고 새로운 톰캣 설정을 추가한다.
web-study(File / Settins / Prject) 모듈 설정에서 Web Module Settings탭에서 이전단계에서 추가한 톰캣 서버를 Appliction Server로 선택한다. Deployment Descriptors의 버젼을 2.4로 변경한다.

여기까지 설정을 마치면 web-study/src/webapp/WEB-INF/web.xml 파일을 IDEA에서 생성해준다.
web-study/src/webapp 경로에 hello.jsp 파일을 생성하고 간단하게 편집을 하고 저장한다.

maven war:webapp
위와 같이 goal을 실행하자. war:webapp 골은 web-study/target/web-study 경로에 완전한 웹어플리케이션 구조를 만들어준다. 컴파일된 클래스 파일은 WEB-INF/classes에 복사해주고 의존적인 jar 라이블러리들은 WEB-INF/lib에 복사해주며 src/webapp로 부터 리소스 파일을 복사한다. 모든게 자동으로 이루어진다.

이제 위에서 설정한 tomcat_local 설정을 실행해서 브라우저로 작성한 hello.jsp 파일을 확인해보자.

아직 별도의 라이브러리 구성이 없지만 ant나 eclipse를 사용하면서 path 설정때문에 고생했던것에 비하면 얼마나 단순하고 멋진가. 이런 단순함은 프로젝트의 규모와 복잡도가 커질수록 진가를 발휘할 것이다.

다음에는 jsf 환경 설정을 하여 간단하게 테스트해보고 opensymphony의 sitemesh를 이용하여 사이트의 통일된 look & feel을 구성해보겠다.

수요일, 6월 01, 2005

xdoclet Java 1.5 문법 지원

[#XJD-41] Support Java 1.5 Syntax ? - XDoclet JIRA

java 1.5 문법을 사용시 xdoclet에서 파싱에러가 나는 문제를 해결한 패치이다.