WebLogic의 HTTP Publish-Subscribe 서버 사용하기
Products/WebLogic Server 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를 설치하여야 한다.
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
'Products > WebLogic Server' 카테고리의 다른 글
WebLogic Administration Console SSL 적용 방법 (0) | 2012.08.10 |
---|---|
Admin Server 실행 후 Managed Server를 실행 시키는 스크립트 (0) | 2012.08.02 |
웹로직 admin 비밀번호 초기화 (0) | 2012.04.09 |
[WebLogic]Session Timeout 설정 (0) | 2012.04.07 |
[WebLogic]Web Application Session 공유범위 이해 및 설정 (0) | 2012.04.07 |
Recent Comments