Eclipse에 Lomboz플러그인 설치하기 2
Summary : 지난 강좌에서는 롬보즈 플러그인을 설치한 다음 웹 프로젝트를 생성하고 디플로이하는 과정에 대하여 살펴보았다.
이번 강좌는 EJB를 기반으로 하는 프로젝트를 생성하고 디플로이하는 과정에 대하여 살펴보도록 하겠다. 또한 클라이언트
모듈을 개발하여 디플로이된 EJB 모듈이 정상적으로 작동하는지 테스트하도록 하겠다.
EJB 프로젝트 생성하기
EJB 모듈을 개발하기 위해서는 먼저 EJB 프로젝트를 생성해야 한다. EJB 모듈은 테스트만을 위하여 Hello
World 메시지를 출력하는 무상태 세션빈을 생성하도록 하겠다.
*EJB 프로젝트
생성하기*
1. EJB프로젝트를 생성하는 과정은 웹 프로젝트를 생성하는 과정과 별반 다르지
않다. 먼저 File >> New >> Project >> Java
>> Lomboz J2EE Wizards의 Lomboz J2EE Project를 선택한다.
2. Project name란에 프로젝트 이름을 입력한다. 이 강좌에서는 HelloWorldEJBProject를
프로젝트 이름으로 사용하겠다. 다음 화면으로 이동
3. 다음 화면에서는 디폴트 값을 사용하도록 하겠다.
다음 화면으로 이동.
4. Create J2EE Module화면이 나타날 것이다. 이 화면에서 웹
애플리케이션 예제에서는 webmodule을 추가했지만 이 강좌에서는 EJB 모듈을 생성하기 때문에
helloworldejb라는 EJB Module을 추가하도록 하겠다. EJB Module을 추가한 다음
Targeted Servers 탭으로 이동하여 앞 강좌에서 설정한 Bea Weblogic Server 8.1을
선택한다.
5. 위 과정까지 진행했다면 종료버튼을 눌러 HelloWorldEJBProject를 생성한다.
6.
프로젝트가 정상적으로 생성되었다면 다음 화면과 같은 디렉토리 구조를 가질 것이다.
EJB 모듈 생성하기
EJB 모듈을 개발하기 위한 프로젝트를 생성했다면 다음은 EJB모듈을 추가할 차례이다. EJB 모듈을 추가하는
방법은 다음과 같다.
1. HelloWorldEJBProject에서 오른쪽 클릭 한 다음 >>
New >> Other >> Java >> Lomboz J2EE Modules로
이동한 다음 Lomboz EJB Creation Wizard를 선택한다.
2. 새로운 EJB 모듈을 추가할 수 있다. EJB 모듈을 추가할 패키지 이름과 클래스이름을 적는다. 이
강좌에서는 패키지 이름을 net.javajigi.ejb, 클래스 이름을 HelloWorldEJB로 사용하였다.
EJB Type은 무상태 세션빈(Stateless Session EJB)을 선택하였다. EJB의 다른 타입에 대한
강좌는 다음 강좌에서 다루도록 하겠다. 이 강좌에서는 단지 무상태 세션빈만을 다루도록 하겠다.
3. 지금까지 HelloWorldEJB를 추가하였다. 다음은 생성된 HelloWorldEJB에 새로운 메써드를
추가할 차례이다. 먼저 HelloWorldEJBBean클래스로 이동한 다음 오른쪽 클릭을 한다.
4.
Lomboz J2EE 메뉴의 Add EJB method를 선택한다.
5. Add Business
Methods화면에서는 EJB 모듈에 새로운 method를 추가할 수 있다. 이 화면에서는 Method
Signature, Method Type, Interface Type등을 선택할 수 있다. 각각의 항목에 대한
정보는 EJB책을 참조하기 바란다. 이 강좌에서는 다루고 싶지만 본 강좌의 목적과 부합되지 않기 때문에 생략하도록
하겠다. 이 강좌에서는 helloWorld 메써드를 추가하고 Business Method, Remote
Interface로 메써드를 추가하도록 하겠다.
6. helloWorld메써드를 추가가 성공하면 HelloWorldEJB클래스에 helloWorld() 메써드가
추가된 것을 확인할 수 있다. 지금까지 생성된 HelloWorldEJB클래스의 소스를 보면 다음과 같다.
package net.javajigi.ejb;
import javax.ejb.SessionBean;
/**
* @ejb.bean name="HelloWorldEJB"
* jndi-name="HelloWorldEJBBean"
* type="Stateless"
**/
public abstract class HelloWorldEJBBean implements SessionBean {
/**
* @ejb.interface-method
* view-type="remote"
**/
public String helloWorld(String name) {
return null;
}
}
7. 위 예제 소스와 같이 생성되었다면 정상적으로 생성된 것이다. 여기서 특이한 점이 있다. 자동으로 생성된 예제
소스를 보면 @ejb.bean, @ejb.interface-method 같은 주석 태그들이 생성된 것을 볼 수
있다. 이는 롬보즈가 소스를 자동으로 생성하기 위하여 Xdoclet라는 것을 이용하고 있기 때문이다.
Xdoclet란 위처럼 소스의 추석파트에 각 태그를 이용하여(이는 Xdoclet에 의하여 이미 정의되어 있다.)
EJB모듈을 위하여 필요한 부가적인 클래스 및 설정파일을 자동으로 생성할 수 있다. Xdoclet에 대한 자세한
내용은 http://xdoclet.sourceforge.net 사이트를 참조하기 바란다. Xdoclet은
EJB뿐만아니라 커스텀 태그 지원, struts, hibernate등 다양한 모듈을 지원하기 위한 커스텀 태그들을
가지고 있다. 이 또한 소스를 자동으로 생성하기 위한 좋은 툴로 활용할 수 있다.
8.
helloWorld 메써드를 이름을 받아서 Hello World 메세지를 출력하도록 다음과 같이 수정한다.
/**
* @ejb.interface-method
* view-type="remote"
**/
public String helloWorld(String name) {
return "Hello World! " + name;
}
9. HelloWorldEJBBean을 수정한 다음 생성한 모듈을 helloworldejb 모듈에 추가할 필요가
있다. 이를 위해서는 HelloWorldEJBBean클래스로 이동한 다음 오른쪽 클릭을 한다. Lomboz
J2EE메뉴에서 Add EJB to module을 선택한다. 다음 화면에서 자신이 추가하고자 하는 EJB
Container에 모듈을 추가해 주면 된다. 지금은 단지 helloworldejb 밖에 없기 때문에 하나의
EJB Container만을 선택할 수 있다.
10. helloworldejb Container에 HelloWorldEJBBean 모듈이 정상적으로 추가되었다면
Lomboz J2EE View화면에서 HelloWorldEJBBean가 추가된 것을 확인할 수 있다.
11. 지금까지 생성한 파일은 단지 세션빈 파일하나이다. 다음은 HelloWorldEJBBean을 위해 부가적으로
필요한 소스파일을 생성할 차례이다. 기존 같으면 각각의 클래스들을 수동으로 만들어야하지만 롬보즈 같은 경우에는
Xdoclet을 이용하여 모든 소스 파일을 자동으로 생성할 수 있다.
12. 먼저 Lomboz J2EE
View화면으로 이동한다. HelloWorldEJBProject의 helloworldejb 모듈에서 오른쪽
클릭하면 Generate EJB files 메뉴를 볼 수 있다. 이 메뉴를 클릭하면
HelloWorldEJBBean를 서비스하기 위해 필요한 모든 소스파일들이 자동으로 생성된다.
13. 위의 과정으로 소스가 정상적으로 생성되었다면 HelloWorldEJBProject 아래에
ejbsrc디렉토리가 생성되면서 모든 소스가 자동적으로 생성된다. 그러나 간혹 정상적으로 소스가 생성되지 않는
경우가 있다. 이때는 Eclipse의 Perspective를 Package Explorer로 선택한 다음
helloworldejb모듈로 이동한다.
14. 오른쪽 클릭 >> Lomboz J2EE
>> Generate EJB classes를 실행한다. 빌드되는 메세지가 보이면서 소스가 생성되는 것을
확인할 수 있다. 이때 생성된 소스 또한 ejbsrc디렉토리 아래에 위치하게 된다.
15. 소스가 정상적으로 생성되었다면 ejbsrc디렉토리 아래에 다음 화면과 같이 생성되었음을 확인할 수 있다.
16. 이상으로 롬보즈를 이용하여 EJB 소스를 자동 생성하고, 하나의 ejb모듈을 위하여 필요한 소스들을 자동
생성하는 방법에 대하여 배웠다. 다음 절에서는 지금까지 생성한 HelloWorldEJB 모듈을 디플로이하는 방법에
대하여 살펴보도록 하겠다.
EJB 모듈 Deploy
이번 절에서는 지금까지 개발한 HelloWorldEJB 모듈을 디플로이하는 방법에 대하여 살펴보도록 하겠다.
디플로이하는 과정은 지금까지 진행해온 과정처럼 간단하게 실행할 수 있다.
1. 먼저
Lomboz J2EE View 화면으로 이동한다.
2. Lomboz J2EE View 화면의
HelloWorldEJBProject로 이동한 다음 Bea Weblogic Server 8.1에서 오른쪽
클릭한다. Run Server, Debug Server, Stop Server 3개의 메뉴가 나타나는 것을 볼 수
있다. 이 메뉴에서 Run Server를 선택하여 서버를 실행한다.
3. 서버가 시작된 다음 Lomboz
J2EE View 화면의 helloworldejb에서 오른쪽 클릭한 다음 디플로이를 진행할 수 있다. deploy
명령을 실행하여 디플로이 작업을 진행한다. Console화면에 ANT가 빌드를 시작하면서 디플로이 작업이 진행되는
것을 확인할 수 있다. 그러나 대부분의 개발자들이 다음과 같은 빌드 실패 화면을 접할 것이다. 이는
deploy.xml을 찾을 수 없다는 내용의 에러 메세지이다.
4. 빌드 실패 문제를 해결하기 위해서는 build.xml파일을 수정해 주어야 한다. 먼저
helloworldejb 디렉토리 아래의 META-INF디레토리에서 build.xml을 연다. 이 파일의
deployTool 타켓을 다음과 같이 주석처리한다.
<target name="deployTool">
<!--
<ant antfile="./deploy.xml" dir="." target="deploy" inheritall="true">
</ant>
-->
</target>
5. build.xml에 주석처리되어 있는 내용을 보면 알 수 있듯이 EJB를 디플로이하기 위한 서버별로 다르게
설정해야 되는 내용이 있다면 deploy.xml에 넣을 수 있도록 하면 된다. 이 강좌에서는 deploy.xml을
이용하지 않도록 하였다.
6. 위와 같이 주석처리한 다음 디플로이 작업을 다시 하면 정상적으로 디플로이
된다.
7. 이상으로 지금까지 생성한 HelloWorldEJB 모듈의 디플로이 작업을 마쳤다. 다음은
플로이한 HelloWorldEJB 모듈이 정상적으로 생성되었는지에 대한 테스트를 진행하겠다.
디플로이한 EJB 모듈 테스트
디플로이한 EJB 모듈 테스트
디플로이한 모듈을 테스트하기 위한 롬보즈
프로젝트를 생성한다. 이 강좌에서는 HelloWorldClientProject라는 이름으로 프로젝트를 생성하겠다.
1. 프로젝트를 생성하는 과정은 전과 동일한 방법으로 생성하면 된다. 단, 프로젝트를 생성할 때 주의할
점은 Project settings 과정에서 앞에서 생성한 HelloWorldEJBProject의 소스들을 참조할
수 있도록 선택해 주어야 한다.
2. HelloWorldClientProject는 단지 클라이언트 프로그램을 위한 것이기 때문에 프로젝트
생성과정에서 webmodule을 추가하여 테스트를 진행할 수 있다. 그러나 이 강좌에서는 단순히 자바 클래스를
통하여 테스트하도록 하겠다. 따라서 프로젝트 생성과정에서 서버를 선택하거나 webmodule을 추가하는 과정은
생략해도 된다. 3. 다음은 지금까지 생성한 HelloWorldEJB 모듈을 테스트하기 위한 클라이언트 소스를
생성할 차례이다. 이 또한 롬보즈를 통하여 자동으로 생성할 수 있다.
4.
HelloWorldClientProject프로젝트에서 오른쪽 클릭 >> New >>
Other >> Java >> Lomboz J2EE Wizards >>
Lomboz EJB Test Client Wizards를 선택한다.
5. Lomboz EJB Test Client Wizards 화면에서는 테스트할 EJB의 Home,
Interface클래스들을 선택한 다음 테스트할 수 있는 모듈을 자동 생성할 수 있다. 다음 화면과 같이 해당
필드값을 입력한 다음 Client 테스트 소스를 생성한다. 이 강좌에서는 클라이언트 클래스 이름으로
HelloWorldTestClient을 사용하도록 하겠다.
6. 자동 생성된 HelloWorldTestClient 파일을 열어보면 testBean() 메써드내부에서 테스트가
가능하도록 생성되어 있다. 이 메써드내에서 앞에서 생성한 helloWorld() 메써드를 테스트할 수 있다.
testBean() 메써드 내부를 다음과 같이 수정한다.
public void testBean() {
try {
net.javajigi.ejb.HelloWorldEJB myBean = getHome().create();
String result = myBean.helloWorld("javajigi");
System.out.println("Result : " + result);
} catch (RemoteException e) {
e.printStackTrace();
} catch (CreateException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
}
7. 또한 현재 롬보즈의 버그가 하나 있는데 JDNI의 URL에 /하나가 빠져 있어 HelloWorldEJB을
lookup하지 못하고 있다. 따라서 getContext() 메써드에 t3:/127.0.0.1:7001 로 되어
있는 부분을 t3://127.0.0.1:7001로 수정한 다음 테스트해야 한다.
private InitialContext getContext() throws NamingException {
Hashtable props = new Hashtable();
props.put(
InitialContext.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
props.put(InitialContext.PROVIDER_URL, "t3:);
InitialContext initialContext = new InitialContext(props);
return initialContext;
}
8. HelloWorldTestClient클래스를 실행하면 다음과 같은 메세지를 확인할 수 있다.
이상으로 이클립스 IDE에서 롬보즈 플러그인을 설치한 다음 웹 모듈과 EJB 모듈을 개발하는 방법에 대하여
살펴보았다. 기존에 하나의 EJB를 개발하려면 상당히 많은 시간을 소비하는 것에 비하여 쉬운 방법으로 모듈을
만들고, jar파일 생성, 디플로이등을 손쉽게 할 수 있는지 볼 수 있었다. 이는 롬보즈와 롬보즈가 기반으로하고
있는 Xdoclet, 빌드를 담당하고 있는 ANT, 이 모든 것의 기반이 되는 Eclipse가 합쳐져서 만들어낸
작품이라고 볼 수 있다.
지금까지 진행되어온 각각에 대하여 더 깊이 있게 알고 싶다면 먼저
Eclipse에 대한 지식이 바탕이 되어야 하며, 다음으로 ANT, Xdoclet 순으로 공부하면 좋을 것으로
생각한다. 그 다음 롬보즈를 이용하여 소스를 자동화한다면 기본적으로 소스가 생성되는 과정을 이해할 수 있을
것이다. 물론 EJB에 대한 기본 지식은 가지고 있어야 할 것으로 생각한다.
다음 강좌는 좀
더 신선한 내용으로 이 강좌를 확장해나갈 생각이다. 다음 강좌를 기대해 주기 바란다. 이 강좌에 대한 질문은
자바지기 사이트의 Q&A란을 이용해 주기 바란다.
강좌에 대하여
작성자 : 박재성
작성일 : 2005년 2월 20일
문서이력 :
- 2005년 2월 20일 박재성 문서 최초 생성
참고 자료
Add Comment