태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
밤하늘의 실제별, 나도 가질 수 있다?!

[Flex/AIR] BlazeDS 사용해보기

2008/08/31 02:09

 

[공지]이미지나 링크가 깨졌다면 댓글 부탁드립니다.

1. BlazeDS 사용해보기
2. BlazeDS 길들이기. Flex Builder, Tomcat, Editplus를 이용하자.
3. BlazeDS 길들이기. Flex Builder, Tomcat, Eclipse 환경에 적응해보자.

-----------------------------------------------------------------------------------------------------
사용자 삽입 이미지

BlazeDS 로고

여기서 소개하는 BlazeDS관련 내용은 학습하면서 정리한 내용이다. Flex는 해봤으나 LCDS나 BlazeDS에 대해서 접해보지 않았다면 유용한 내용이라 생각한다.

Blaze는 확타오름, 불길이라는 뜻이다. 그럼 BlazeDS는 타오르는 Data Service라는 의미인가? BlazeDS는 LCDS의 일부기능을 Open Source로 만들어 공개한 것이다. Open Source로 공개한데에 Blaze라는 이름이 뒷받침하고 있다는 생각이 든다. Open source의 힘을 믿어보겠다는 것 아닐까?


BlazeDS 소개

BlazeDS는 Adobe Flex/AIR에서 사용될 수 있는 RPC 및 데이터 서비스를 지원한다.
BlazeDS는 LCDS(Live Cycle Data Service, 구 FDS)의 일부 기능이 제외되었고 OpenSource 프로젝트로 소스가 공개되어 있다.

여러분은 다음 주소를 통해 BlazeDS에 대한 정보를 얻을 수 있겠다.
BlazeDS 공식 홈페이지 : http://opensource.adobe.com/wiki/display/blazeds/BlazeDS

사용자 삽입 이미지

BlazeDS 통신구성


BlazeDS는 위 그림처럼 J2EE 서버에서 동작하여 서버에 접속하는 Client와 통신하게 된다.  
BlazeDS를 구동하기 위해 아래와 같이 2가지가 필요한 것을 알 수 있다.

1. 클라이언트 사이드 애플리케이션
BlazeDS의 클라이언트 사이드 애플리케이션으로 Flex 또는 AIR가 이용된다. BlazeDS 서버와 통신하기 위해 HttpService, WebService, RemoteObject, Producer, Consumer 등, Flex SDK(Softeware Development Kit)의 컴포넌트를 사용하면 된다.

단 HttpService와 WebService는 BlazeDS가 없어도 사용할 수 있지만, RemoteObject, Producer, Consumer등은 BlazeDS 또는 LCDS등이 있어야 사용이 가능하겠다.

2. BlazeDS 서버
BlazeDS 서버는 웹서버의 J2EE 애플리케이션 서버에서 구동된다. BlazeDS를 지원하는 J2EE 애플리케이션 서버를 구성하기 위해 다음 단계가 필요하다.

a. WEB_INF/lib에 BlazeDS JAR를 추가한다.
b. WEB_INF/flex에 BlazeDS 관련 설정파일을 편집한다.
c. WEB_INF/web.xml 내에 MessageBrokerServlet 및 session listener를 정의한다.

기존에 J2EE 서버구성에 대해서 해보지 않았다면 이게 무슨 의미인지 와닿지 않을 것이라 생각한다. 하지만 앞으로 있는 내용을 천천히 따라가다 보면 감각을 익힐 수 있을 것이라 생각한다.


BlazeDS의 라이센스 정책


GNU LGPL(http://www.gnu.org/licenses/lgpl.html)을 따른다.
LGPL은 GPL과 비슷하지만 LGPL을 따르는 라이브러리를 링크시키면 해당 응용프로그램의 소스를 공개할 필요가 없다는 점이 다르다. 즉 라이브러리 형태로 사용하면 만들어진 소프트웨어는 공개할 필요가 없다. 오픈소스 소프트웨어의 사용을 장려하기 위한 다소 완화된 라이센스로, 이를 채택한 최초의 소프트웨어는 GNU C 라이브러리이다.

아래에 라이센스 정책에 대해서 명시되어 있다.
http://opensource.adobe.com/wiki/display/blazeds/Downloads


BlazeDS 구성

BlazeDS의 핵심 서비스는 다음과 같다.
 

사용자 삽입 이미지

BlazeDS의 구성


1. RPC(원격함수호출,Remote Procedure Call) 서비스 
서버사이드의 데이터와 클라이언트 사이드의 애플리케이션 간에 연결해주는 서비스이다.
BlazeDS는 HttpService(get/post방식), WebService(soap), RemoteObject(Java 객체)를 지원한다. 이 서비스는 LCDS의 기능과 전혀 차이가 없다. 그러므로 RPC기능을 사용하는 경우 LCDS가 아니더라도 BlazeDS만 가지고 충분히 커버할 수 있겠다. 더 자세한 내용은 아래 링크를 참고하길 바란다.

RPC Services

참고로 HttpService나 WebService의 경우 BlazeDS proxy service도 없어도 사용할 수 있지만 RemoteObject의 경우에는 LCDS 또는 ColdFusion 또는 BlazeDS 없이는 사용할 수 없다.



2. Messaging 서비스
서버에 접속한 여러 클라이언트간에 실시간(real-time)으로 메세지를 전달해 주는 서비스이다. 서버에 접속한 모든 사용자 중에 Producer는 메세지를 송신하며 Consumer는 메시지를 수신한다. 실시간으로 진행되기 때문에 RPC와 다르게 클라이언트 요청없이도 서버 푸시(Server push)가 가능하다. 하지만 LCDS의 Messaging서비스에 비해 좋지 않은 부분이 LCDS가 CPU 1개당 1000개 수준의 Dedicated messaging service 를 지원하는 반면, BlazeDS에서는 CPU당 100개 수준의 Web container-based messaging service 만을 지원한다고 한다.

BlazeDS의 Messaging 서비스는 JMS(Java Message Service) 연결도 지원한다.

더욱 자세한 내용은 다음 링크를 참고한다.
Messaging Services



BlazeDS 다운로드

BlazeDS는 3가지 다운로드 타입을 제공한다.

1. TurnKey
다양한 샘플 예제를 비롯하여 BlazeDS가 이미 설정되어 있는 Tomcat이 포함되어 있다. 이용자는 이것을 다운로드 받아 설치하면 별도의 WAS(Web Application Server) 구성이 필요없이 바로 샘플을 테스트 해볼 수 있다. 이미 WAS를 구성한 사람도 BlazeDS를 학습하기 위해 샘플이 필요할 경우 사용할 수 있겠다. 처음 해보는 사람은 이것을 다운로드 받는다. 여기 있는 소스는 모두 LGPL 라이센스를 가진다.

2. Binary Distribution
개발시에 필요한 JAR 라이브러리 및 xml 설정파일만 포함되어 있다. 이는 war 형태로 압축되어 있다.
BlazeDS에 대해 어느정도 학습하고 나서 개발하고 직접 설정을 하기 위해 이것을 다운로드 받아 사용하면 되겠따. 압축을 풀어서 보면 blazeDS.war이 있을 것이다. 이것을 Eclipse에 Import시켜 사용하거나 Tomcat의 경우 웹루트에 복사만 하면 동작시 자동으로 war 압축을 풀게되어 BlazeDS를 사용할 수 있는 구성이 된다.

3. Source
BlazeDS 전체 소스가 포함된 것이라 생각하면 되겠다. BlazeDS는 앞서 설명했듯이 LGPL 라이센스를 가진다.
참고로 BlazeDS는 SVN으로 소스코드를 오픈해놓고 있다. 관련 내용은 [여기]를 참고한다.

정리하면 초보자나 샘플소스를 보고 싶은 사람은 1. TurnKey, 일반 개발을 위해서는 2. Binary Distribution, BlazeDS open source 프로젝트에 참여하시고 싶은 사람은 3. Source를 보면 되겠다.

[BlazeDS 다운로드 하러가기]



간단하게 실행해 보기

BlazeDS를 한번도 안해본 사람을 위한 내용이다. 각종 설정방법 및 활용예제는 다음에 적어보도록 하겠다.

1. 다운로드
BlazeDS를 구동하기 위한 모든 구성이 이미 만들어져 있는 TurnKey를 다운로드 받자.

2. 압축을 푼다.
압축을 푼뒤 아무곳에다 넣어도 상관없다.

3. Tomecat 구동
Tomcat을 구동하기 위해 tomcat/bin 으로 들어가 두번 클릭하여 startup.bat를 실행한다. 만약 이전에 다른 tomcat이 구동되어 있는 상태라면 중지시킨후에 해야한다. 실행했는데도 아무 반응이 없다면 아마 이런 메시지가 띄워지면서 콘솔창이 잠깐 떳다가 사라진 것일것이다.

Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program


이와 같은 메시지를 모여주면서 구동이 안되는 경우에는 JDK(Java Development Kit)가 설치가 되어 있지 않은 경우이므로 JDK를 설치한 후에 Tomcat을 동작해야한다. 구동이 되었으면 바로 5번으로 넘어가자.

4. JDK 설치 및 환경설정
 - http://java.sun.com 에 방문해서 downloads의 Java SE(Java Standard Edition) 메뉴로 들어간다.
 - JDK 6 Update 7을 다운로드 받는다. 70MB가 넘으니 다운받는데 시간 좀 걸린다.
 - 받은 JDK를 실행하여 설치한다.  
 - JAVA_HOME 환경변수를 등록한다. 제어판->(성능 및 유지관리)->시스템에 들어가 "고급"탭의 "환경변수"버튼을 클릭한다. "시스템 변수"에서 "새로만들기"를 누른다. 만약 설치한 JDK가 "C:/Program Files/Java/jdk1.6.0_07"이라면 변수 이름으로 "JAVA_HOME", 값으로 "C:/Program Files/Java/jdk1.6.0_07"를 넣어주면 되겠다. 이러한 과정은 윈도우가 아니더라도 Linux도 마찬가지 과정이 있다. (Linux 환경에서 Tomcat, JDK 설치 하기 참고)
- JDK 설치와 환경변수 등록을 완료하면 이제 Tomcat을 3번 방식으로 구동해보자. Tomcat 콘솔창이 잘 떠있으면 제대로 JDK가 설치가 된것이다.

5. Tomcat 서버에 접속해보자.
http://localhost:8400/ 으로 접속한 뒤 아래와 같은 화면이 나오면 Tomcat이 제대로 동작하고 있는 것이다.

사용자 삽입 이미지

BlazeDS가 설치된 Tomcat 서버에 접속한 화면



- Console Application : BlazeDS를 모니터링하는 툴이다. Flex로 만들어져 있다는 것이 흥미롭다.
- Samples Application : 각종 샘플에 대한 설명과 링크가 있다. BlazeDS를 학습할 때 활용하면 되겠다.
- Template Application : BlazeDS의 최소한의 설정과 라이브러리 파일만 존재한다. 여기에 BlazeDS를 연습하면 된다.

이들 3개 Application은 tomcat/webapps 폴더에 자리잡고 있다. 학습하기 위해 폴더에 들어가 직접 소스를 분석해보는 일이 잦아질 것이다.

6. 샘플들을 실행해보자.
먼저 샘플중에 DashBoard를 구동해보자.
2개 이상의 창을 띄워서 http://localhost:8400/samples/dashboard/index.html로 접속해보자.
사용자 삽입 이미지
사용자 삽입 이미지

위처럼 서로 동기화 되어서 화면이 변하는 것을 볼 수 있다.

메세징 서비스를 이용한 채팅방에 대한 예제도 있다.
http://localhost:8400/samples/testdrive-chat/index.html  


TurnKey에 제공하는 많은 샘플 예제들이 자체 DB가 구동되어야 실행이 된다.
그러므로 sampledb/startdb.bat를 구동한다.

그런다음 http://localhost:8400/samples 로 들어가 예제들을 구동해보길 바란다.  되도록이면 전부 실행해보면서 비교하길 바란다. chat과 같은 경우 2개 이상 창을 띄워서 봐야 제대로 동작하는 모습을 확인할 수 있겠다. 예제를 실행해보고 분석해봐야 BlazeDS를 이해하는데 도움이 된다.
 

7. 예제 소스 보기
예제를 보고 학습하면 BlazeDS 활용법을 아는데 도움이 될 것이다.
- Java 소스 : tomcat/webapps/samples/WEB-INF/src/ 안에 있다.
- Flex 소스 : tomcat/webapps/samples/WEB-INF/flex-src/ 안에 압축되어 있다.
- 설정파일들 : tomcat/webapps/samples/WEB-INF/flex/ 안에 xml파일들이다.

그외에 tomcat/webapps/samples/WEB-INF/안을 살펴보면 classes 폴더는 Java소스가 컴파일되어 실제로 구동되는 파일들이 있고, db 폴더에는 예제에서 사용되는 DB 설정 및 Query문이 있다. lib폴더에는 jar 파일들이 있다. 이 안에는 BlazeDS가 구동하기 위한 jar도 포함한다.


정리하며

지금까지 BlazeDS에 대해 대략적으로 살펴보고 간단하게 예제 소스를 실행도 해보았다. BlazeDS에 대해서 아주 간단히 소개한 수준이기 때문에 실제로 응용할려면 더욱 공부해야한다. 하지만 개념잡는것 조차도 초보자들에게는 어렵지 않던가? ㅡㅡ;;;

앞으로 시간이 허락된다면 BlazeDS의 RPC, 메시징 서비스를 활용하는 방법을 정리한 글도 올려볼려고 한다. 주로 Flex Builder와 Eclipse를 이용하여 환경을 구축해보겠다. 그리고 DB와 연계하는 경우 iBatis등을 활용하는 방법도 적어보고자 한다. 더욱 나아가 Spring도 함께~~ ㅋ

참고

공식 사이트 : http://opensource.adobe.com/blazeds
개발 가이드 : http://livedocs.adobe.com/blazeds/1/blazeds_devguide/
Flex Builder와 Eclipse를 분리해서 RemoteObject 개발 : http://blog.naver.com/zoom7810/50032372125
Sewon님의 BlazeDS에 대한 글 : http://sewony.tistory.com/category/FDS
머드초보님의 BlazeDS에 대한 글 : http://mudchobo.tomeii.com/tt/search/BlazeDS



글쓴이 : 지돌스타(http://blog.jidolstar.com/362)

크리에이티브 커먼즈 라이선스
Creative Commons License

Adobe Flash Platform , , , , , ,

Trackback 주소: http://blog.jidolstar.com/trackback/362
  1. 2008/09/03 18:02
    한눈에 보는 BlazeDS 개발자 가이드 Tracked from 마인드맵 활용 가이드- 만득이 블로그
  2. 2009/09/09 22:27
  3. 2009/09/09 22:28
  1. Blaze 가 뭘까 궁금했는데 좋은 정보 감사드립니다. 이젠 지돌님 블레이즈까지 섭렵하실려고...그대는 욕심쟁이 우후훗~

  2. Blaze가 참 멋진 뜻이더라구요. ㅎ
    실력이 없으니 이렇게 라도 열심히 해야죠 ^^

  3. Blog Icon
    박스농사

    'ㅅ' 멋지네요!
    또한 그 열정이 부럽습니다.

  4. 박스농사님도 열심이시면서~ ^^

  5. 지돌스타님 짱~ ㅎㅎ

  6. 검쉰이 더 짱!

  7. Blog Icon
    옹씨루

    주기적으로 좋은정보가 올라오는군요~ ^^

  8. 좋은 정보는 함께 공유하는 미덕~~
    옹씨루님도 열심히 올려주셔서 감사~

  9. 멋쨍이셔요~ ㅎ 블레이즈와 소개팅을 해주시네요 ㅎㅎ

  10. 항상 초보자 입장에서... ㅋㅋㅋ
    BlazeDS와 미팅이 넘 어려워서
    다른 분들에게는 쉽게 해드릴려구~~ ^^

  11. 홀~홀~ 이쁜정보 감사합니다. ^^

  12. ㅎㅎ 감사합니다.

  13. Blog Icon
    passion

    좋을 글 감사합니다..
    실제적인 예를 들어서 BlazeDS 설정에 대한 방법해서 다시한번 해주셨으면 하는 바람이 많이 들어요..

    저도 BlazeDS 를 설치해서 Test 해보고 있는데요..
    모자란 지식으로 이것저것 해보는데 잘 안되내요.
    설정에 대한 자료 찾기도 쉽지 않고..

    BlazeDS의 경우 jdk1.6, tomcat 6.x 에서 가능하다는 자료를 읽었는데

    jdk 1.6 , tomcat 4.x 버전에서도 Samples.war를 webapps에 deploy 시키면 예제를 확인할 수 있었습니다.

    궁금한건 폴더 구조가 webapps/samples 인데 webapps 이외의 다른 폴더로 변경하는 방법을 모르겟습니다.

    또 하나 의문이 생기는것이(처번째와 같은 건지...도)
    기존에 진행하던 project가 있고 거기에 BlazeDS Remote Object를 추가해서 동시에 쓰려면 어떻게 해야하는지 하는것입니다.

    BlazeDS의 구조는 webapps/samples/WEB-INF/classes/의 구조로 되어있고 classes 하부에 컴파일된 class 파일들이 위치해야 쓸수가 있는것 같은데요.
    그렇다면 기존의 프로젝트 폴더를 다 옮겨야 하는건지...

    tomcat 5.5에서 가능하다고는 하는데.. 여러가지가 걸리내요.

    자사 싸이트 jdk가 1.4 인데 사용이 그렇다면 아예 불가능할까요??

    그냥 HTTPService를 사용해야 하나...
    하루종일 Blaze와 씨름하다보니.. 정신이 왔다갔다하내요..

    항상 좋은정보 감사드립니다..

  14. BlazeDS 환경에 맞는 Tomcat과 JDK를 사용해야한다고 생각합니다. 기존 환경이 맞지 않으면 완벽하게 동작하지 않을거라 생각해요.

    BlazeDS의 기능을 기존 프로젝트에 넣을려면 web.xml에 BlazeDS설정을 복사하시고 WEB-INF/flex 폴더에 있는 설정파일과 WEB-INF/lib에 있는 jar파일을 기존프로젝트에 넣으시면 될 것으로 생각합니다.(하지만 저도 처음이라 실제로 안해봐서 모르겠습니다.)

    다른 질문에 대한 내용은 blog.jidolstar.com/363에서 답을 얻으실 수 있을 것 같아요 개념 및 설정에 대해서 정리했는데 도움이 되실까 모르겠습니다. 저도 Java, Tomcat환경에 아직 많이 적응 못한 상태입니다. 함께 공부했으면 좋겠네요 .ㅎㅎ

  15. Blog Icon
    눈송이

    전 사용할 기회가 없다가 이제 시작할려고 했는데.. 정말정말 감사합니다~^^

  16. 좋은 자료가 되었다니 다행이예요

  17. 오늘도 역시나 좋은 글이군요!
    리스크 비용만 충분히 잡히면, 실제 프로젝트에서도 사용해보고 싶은데, 영 기회가 안 닿네요 ㅎㅎ
    에잉..!

  18. BlazeDS을 어떻게 도입할까 고민하게 되더군요.
    계속 글을 쓰고 있는데 관심가져주시고 의견있으면 꼭 댓글 부탁해용 ^^

  19. Blog Icon
    어디다써

    혹시 jeus 5.0 에서도 사용 할 수 있나요?

  20. 테스트는 안해봤습니다. 그래도 충분히 쓸 수 있지 않을까요? 같은 J2EE 기반에서 돌아갈 수 있다면 말이죠.

  21. Blog Icon
    sora

    안녕하세요 좋은 자료 감사히 읽고 있은 와중에 간단한 프로그램을 만들다 에러가 뜨네요.

    예제중에서 testdrive-datapush 만 따로 프로젝크 만들어서 실행했는데요

    http://localhost:8080/test/testdrive-datapush/main.html
    "Subscribe to 'feed' destination" 버튼을 크릭하면 tomcat 에러창에 아래와 같은 에러가 뜨는데요 ....
    이해가 안가네요 어느부분 잘못된거죠? 도음 부탁드립니다.

    =====================================================

    2009. 3. 10 오후 5:14:56 org.apache.catalina.core.StandardWrapperValve invoke
    정보: Servlet MessageBrokerServlet is currently unavailable
    2009. 3. 10 오후 5:14:56 org.apache.catalina.core.StandardWrapperValve invoke
    정보: Servlet MessageBrokerServlet is currently unavailable

  22. Blog Icon
    불량오이

    잘보고갑니다~ 백지상태에서 벗어나게 해주신 좋은글이네요~

  23. 도움이 되었다니 기쁩니다. ^^

  24. Blog Icon
    외국인노동자

    올수밖에 없게 글을 쓰시는군요. +_+
    정말 이해하기 쉬웠습니다. 정말 감사하고 자주자주 오게 될듯 싶네요 ^^
    잘봤습니다. 꾸벅

  25. 도움이 되었다니 기쁩니다. ^^

  26. Blog Icon
    왕초보 이용자

    자바를 설치 한후에도 Neither the JAVA_HOME nor the JRE_HOME environment variablevariable is defined
    At least one of these environment variable is neededneeded to run this program
    문구가 뜹니다 버전은 1.6.14버전이구요 jdk
    java -version 이나 java , javac으로 설치 되었나 확인까지 해보아도 계속 문구가 뜨내요

  27. JAVA_HOME 설정이 제대로 되었는지 확인해보세요.

  28. Blog Icon
    왕초보 이용자

    설정 때문이였군요 java_home 근데 또 문제가... 왜 8080톰켓은 돼는대 8400 <-- blazeds는 접속이 .. 안될까요

  29. blazeDS는 웹애플리케이션입니다.
    웹애플리케이션컨테이너인 톰켓의 사용포트가 8080이라면 자동적으로 그 위에서 구동되는 웹애플리케이션도 8080으로 접속해야겠지요.

  30. Blog Icon
    왕초보 이용자

    Neither the JAVA_HOME nor the JRE_HOME environment variablevariable is defined
    At least one of these environment variable is neededneeded to run this program
    자바 jdk 1.6.14버전 설치 후 에도 문구가 뜨내요

  31. 말씀드린데로 JAVA_HOME 환경설정이 제대로 되었는지 확인해보세요.