
이름을 바꾸거나 삭제하거나.. 추가는 클래스 키를 생성해야 하므로 패스!!
Posted by 모질이


Posted by 모질이
JSON 호출 (Java Service)
미디어 엔진에서는 위의 tid 값을 가지고 있다가 프로세스 완료후 결과 핸들러를 능동적으로 호출하면서 파라미터에 tid를 재전송한다. 이제 엔진에서 결과값을 리턴할 서블릿을 구성해보자.
Result Handler (Servlet)
호출/결과 (Flex)
Posted by 모질이
Adobe Flex 2.0 발표와 더불어 공개된 Adobe Flex Data Service 2.0(이하 FDS2)은 그 기가 막힌 성능으로도 여러 사람들에게 놀라움을 안겨주었지만 더불어 기가 막힌 가격으로 또한번 여러 사람들을 경악에 빠뜨린 바 있다.
현재 Adobe는 FDS2의 계보를 이으며 여러 제품군과 통합되고 그 기능이 개선된 LiveCycle Data Service(이하 LCDS)를 공급중이며, 많은 기업에서 기존의 EJB 등의 UI를 Flex로 개선하면서 도입하고 있다. 뭐 가격이 어찌됐건 성능 하나는 죽이니까..
문제는, 개발자들이 가격을 알아버렸다는데 있겠다. 원체 비싼 솔루션이다 보니 엔지니어들에게는 그 금액마저도 부담으로 다가오는 것이다. 어차피 엔지니어가 돈주고 사는것도 아닌데 왜냐고?
그 이유를 디벼줄께
좀 조악한 비유이긴 하지만 타자 역시도 저와 비슷한 느낌으로 LCDS(당시에는 FDS)에 접근하기가 쉽지만은 않았다.
LCDS.. 그 가격에 비해 알고보면 실로 별거 아니다. 지금부터 차근히 디벼보자!!
1. 라이센스 정책
FDS2 시절에는 라이센스 등급이 Express, Community, Enterprise 이렇게 크게 나뉜다. 현재는 Express 대신에 BlazeDS가 1CPU 라이센스로 무료 배포되고 있다. 1CPU는 '물리적으로' 1개의 CPU를 일컫는다. 다만 이 '물리적으로'라는 말에 해석이 엿장수 마음이라 듀얼코어까지만 '물리적 1CPU'로 인정하고 쿼드코어부터는 2CPU로 간주한다. 헥사코어? 옥토코어? 각각 3CPU / 4CPU 되시겠다.
2. 설치
설치야말로 Adobe 홈페이지에 그럴듯하게 예시 및 설명이 되어 있다. 다만, 실제 사용하기 위해서는 flex.war 파일 하나만 있으면 된다는거~ BlazeDS의 경우에는 blazeds.war 파일 되시겠다. 타자는 아래부터는 BlazeDS로 예시를 들어 보겠다.
우선 엔지니어의 윈도우에 WAS를 설치한다. 타자는 Tomcat을 설치했다.
LCDS라면 역시 윈도우에 설치한다. 기존 FDS2에서는 JRun 기반으로 배포를 했던 반면에, 현재는 Tomcat 기반으로 배포한다. 사실 다 필요없다. flex.war / blazeds.war 이 파일만 찾아서 엔지니어가 실제로 사용할 WAS에 deploy해주면 그게 바로 설치작업이다. 설마 war 파일 deploy하는 법까지 설명할 필요는 없을듯 하다.
3. 사용
이제 설정 파일을 열어보자. Tomcat의 경우 {AppRoot}/WEB-INF/flex/service-config.xml 의 경로를 열어보면 되겠다.
service-config.xml을 열어보자
위와 같이 각 기능에 따라 몇개의 파일로 분류되어 있다. RemoteObject 사용에 대한 설정은 remoting-config.xml, Messaging 사용에 대한 설정은 messaging-config.xml을 열어보면 된다.
타자, RemoteObject에 꽂혔다.
remoting-config.xml을 열어보자
굵은 글씨 부분이 타자가 추가한 부분이다.
파란 글씨는 Flex에서 호출할 이름 되겠으며, 붉은 글씨는 호출받으면 실제로 대령할 Java 클래스 경로를 넣어주면 된다. 이게 뭐냐고?
Flex RemoteObject란 말 그대로 Remote(원격) Object(객체). Flex 내에서 new Object 뭐 이런 식으로 생성하지 않아도 WAS에 고이 모셔둔 Java 객체를 마치 Flex 내의 객체인양 사용할 수 있는 기능이다.
Java 샘플 소스
Flex 샘플 소스
Posted by 모질이
Posted by 모질이
화면 우측 하단 귀퉁이에 조그맣게 버튼을 달아놓는다. 최초 받는 이벤트는 mouseDown.
<mx:Button width="10" height="10" mouseDown="resizeDownHandler(event)"/>
<mx:Script>
<![CDATA[
private function resizeDownHandler(event:MouseEvent):void {
systemManager.addEventListener(MouseEvent.MOUSE_MOVE, resizeMoveHandler, true);
systemManager.addEventListener(MouseEvent.MOUSE_UP, resizeUpHandler, true);
}
private function resizeUpHandler(event:MouseEvent):void {
systemManager.removeEventListener(MouseEvent.MOUSE_MOVE, resizeMoveHandler, true);
systemManager.removeEventListener(MouseEvent.MOUSE_UP, resizeUpHandler, true);
}
private function resizeMoveHandler(event:MouseEvent):void {
if (event.buttonDown) {
var pt:Point = new Point(event.stageX, event.stageY);
pt = globalToLocal(pt);
this.width = (pt.x > this.minWidth) ? pt.x : this.minWidth;
this.height = (pt.y > this.minHeight) ? pt.y : this.minHeight;
}
}
]]>
</mx:Script>
Posted by 모질이
Posted by 모질이

알림영역 히스토리 삭제방법 열기
Posted by 모질이