'Cometd'에 해당되는 글 1건

  1. 2012.03.27 WebLogic의 HTTP Publish-Subscribe 서버 사용하기

WebLogic의 HTTP Publish-Subscribe 서버 사용하기

View Comments


HTTP Publish-Subscribe Server(이하 pub-sub)은 채널들에 대기(subscribe)하고 있는 웹 클라이언트들에게 HTTP를 이용하여 비동기적으로 메시지를 보내는(publish) 기술이다.
다시말해 일반적인 웹 환경하의 서버-클라이언트 프로그래밍 방식으로 구현할 때 발생하는 서버의 부하를 줄이고자 채널에 대기중인 클라이언트에게 서버에서 메시지를 보내는 방식으로 구현된 서버이다.

pub-sub 서버는 cometd 프로젝트에서 제안한 Bayeux protocol에 기초하여 만들어졌다. 보다 자세한 사항은 각 링클를 통하여 확인한다. (사실 필자도 제대로 읽어보진 않았음.. ㅠㅠ)

아직은 필자가 자세한 내용을 다뤄보지 않아서 세부적인 내용은 다음에 다루기로 하고, 간단한 설정 및 맛보기를 해보자.

본 문서는 WebLogic 10.3.4에서 테스트 되었다.

1. WebLogic 설치시에 반드시 Web 2.0 HTTP Pub-Sub Server를 설치하여야 한다.

1.4에 선택 된 것을 확인할 수 있다.


2. WebLogic 도메인 생성 후 콘솔에 접속하여 pubsub-1.0.war를 라이브러리로 배포한다.
- pubsub-1.0.war 파일은 WebLogic 설치 디렉토리/wlserver_10.3/common/deployable-libraries 밑에 위치한다.


3. Web Application을 만든 후 WEB-INF/weblogic.xml 파일에 다음을 추가한다.
1.<wls:library-ref>
2.    <wls:library-name>pubsub</wls:library-name>
3.    <wls:specification-version>1.0</wls:specification-version>  
4.</wls:library-ref>

4. WEB-INF 밑에 weblogic-pubsub.xml 파일을 생성하여 다음을 추가한다.
01.<!--?xml version="1.0" encoding="UTF-8"?-->
02. 
03.<wlps:weblogic-pubsub xmlns:wlps="http://www.bea.com/ns/weblogic/weblogic-pubsub">
04. 
05.  <wlps:channel>
06.    <wlps:channel-pattern>/hello/**</wlps:channel-pattern>
07.  </wlps:channel>
08. 
09.  <wlps:channel-constraint>
10.    <wlps:channel-resource-collection>
11.      <wlps:channel-resource-name>subscribe</wlps:channel-resource-name>
12.      <wlps:description>subscribe channel constraint</wlps:description>
13.      <wlps:channel-pattern>/hello/*</wlps:channel-pattern>
14.      <wlps:channel-operation>subscribe</wlps:channel-operation>
15.      <wlps:channel-operation>create</wlps:channel-operation>
16.      <wlps:channel-operation>publish</wlps:channel-operation>
17.    </wlps:channel-resource-collection>
18.  </wlps:channel-constraint>
19. 
20.</wlps:weblogic-pubsub>

5. Dojo Toolkit을 다운로드받아 Web Application root에 복사한다.
- 필자는 1.6 버전을 다운로드 받았으며 Web Application root의 dojo-release-1.6.1 디렉토리에 복사하였다.

6. Web Application root에 msg.html 파일을 생성하여 다음의 내용을 추가한다.
01.<!-- Import Dojo -->
02.<script type="text/javascript" src="dojo-release-1.6.1/dojo/dojo.js" djconfig="parseOnLoad:true, isDebug:true"></script>
03. 
04.<script type="text/javascript">
05.    dojo.require("dojox.cometd");
06.    dojox.cometd.init("cometd");
07.    dojox.cometd.subscribe('/hello/world', function(msg) { alert(msg.data.test); } );
08.   
09.</script>
10. 
11. 
12.<input onclick="dojox.cometd.publish('/hello/world', { test: 'hello world' } )" value="Click Me!" type="button">

7. Web Application을 배포한 다음 브라우저 2개를 띄우고 한쪽의 브라우저에서 버튼을 누른다.

간단히 설명하자면,
msg.html을 클라이언트에서 실행하면(브라우저에서 열면) "/hello/world"라는 이름의 채널에서 수신을 대기하고(브라우저에서 request를 보낸 후 서버에서 response를 받지 않은 상태, dojox.cometd.subscribe)에서 버튼을 클릭하여 메시지를 보내면(dojox.cometd.publish) pub-sub 서버는 "/hello/world" 채널에서 대기중인 클라이언트들에게 메시지를 보낸다.

설명이 뭔가 모호한 구석이 있네.. ㅎ

결론은 WebLogic에서는 comet, reverse ajax, long polling 등등의 기술을 지원하기 위해서 cometd 프로젝트의 Bayeux protocol을 사용하는 라이브러리를 제공하며 이를 이용하기 위해서는 Web Application의 Descriptor에 간단하게 기술하여 사용할 수 있다는 것이다.

참고사이트
- Real-time Updates on WebPages - Part 2 - Hello World Comet Application
- Using the HTTP Publish-Subscribe Server


Comments (+add yours?)

Tracbacks (+view to the desc.)

Newer Entries Older Entries