http://mudchobo.tomeii.com/tt/236 에 이어서-_-;
이제 셋팅이 끝났으면 코딩을 해봅시다.

※이 예제는 스프링프레임워크에서 제공하는 스텝바이스텝 예제의 일부를 조금 수정한 것 입니다.

우선 DB구조입니다-_-;
[code]
CREATE TABLE `products` (
  `id` int(11) NOT NULL,
  `description` varchar(255) default NULL,
  `price` decimal(15,2) default NULL,
  PRIMARY KEY  (`id`),
  KEY `products_description` (`description`)
) ENGINE=MyISAM DEFAULT CHARSET=euckr;

INSERT INTO `products` (`id`, `description`, `price`) VALUES
(1, 'Lamp', 391.50),
(2, 'Table', 2918.85),
(3, 'Chair', 884.27);
[/code]

그냥 src폴더는 자바서버단 폴더구요. flex_src폴더는 플렉스클라이언트단 폴더입니다^^
우선 스프링을 사용할 수 있게 web.xml파일을 수정해봅시다.
web.xml파일을 열어서 코드를 추가합니다.

web.xml
[code]
<context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>

<listener>
  <listener-class>
   org.springframework.web.context.ContextLoaderListener
  </listener-class>
 </listener>
[/code]
applicationContext*라고 적어 놓은 이유가 ibatis랑 분리를 하려고-_-;
설정파일은 applicationContext.xml과 applicationContext-ibatis.xml 두개를 사용할껍니다.

src에다가 코딩을 해봅시다.
java는 perspective를 Java EE로 바꾸고 합시다-_-;

우선 domain부분에 ValueObject를 하나 만들어봅시다-_-;
Java Resources:src에다가 New를 하고 class를 선택합니다.
package는 springapp.domain이라고 하구요.
Name은 Product라고 하고 Finish
[code]
package springapp.domain;

public class Product {

 private int id;
 private String description;
 private Double price;

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getDescription() {
  return description;
 }

 public void setDescription(String description) {
  this.description = description;
 }

 public Double getPrice() {
  return price;
 }

 public void setPrice(Double price) {
  this.price = price;
 }
}
[/code]
ProductDao를 만들어봅시다.
Java Resource:src에 New해서 interface를 추가합시다.
package에다가 springapp.dao라고 써놓고,
Name에다가 ProductDao라고 씁시다-_-;
[code]
package springapp.dao;

import java.util.List;

import springapp.domain.Product;

public interface ProductDao {
 public List<Product> getProductList();
}
[/code]
딸랑 ProductList만 가져오는 메소드가 있어요!
저 Dao인터페이스를 구현해봅시다!!!
[code]
package springapp.dao;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

import springapp.domain.Product;

public class ProductDaoImpl extends SqlMapClientDaoSupport implements
  ProductDao {

 protected final Log logger = LogFactory.getLog(getClass());

 @SuppressWarnings("unchecked")
 @Override
 public List<Product> getProductList() {
  logger.info("Getting products!");
  return getSqlMapClientTemplate().queryForList("getProductList");
 }
}
[/code]
ibatis부분인데요. 설정파일을 보도록 하겠습니다.

SqlMapConfig.xml
[code]
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMapConfig     
    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"     
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

<sqlMapConfig>
 <typeAlias alias="Product" type="springapp.domain.Product"/>

 <sqlMap resource="springapp/dao/MySQLProduct.xml" />
</sqlMapConfig>
[/code]
alias지정해주고, resource는 MySQLProduct.xml파일이네요. 보도록 합시다.

MySQLProduct.xml
[code]
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMap     
    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"     
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap namespace="Product">

 <resultMap id="ProductMap" class="Product">
  <result property="id" column="id" />
  <result property="description" column="description" />
  <result property="price" column="price" />
 </resultMap>

 <select id="getProductList" resultMap="ProductMap">
  select id, description, price from products
 </select>

</sqlMap>
[/code]
getProductList라는 것은 products테이블에서 내용을 select하는 것이네요.
Dao가 완성되었네요! 너무 길어지니 다음이시간에-_-;

 
Posted by 머드초보

댓글을 달아 주세요

  1. IxU 2008.09.11 16:14  댓글주소  수정/삭제  댓글쓰기

    언제나 많은 도움이 되고 있습니다.
    감사합니다.^_^

    getSqlMapClientTemplate().queryForList("getProductList";);
    요기에서요.
    queryForList 는 인자가 2개가 필요한거 같은데...
    제가 잘못 알고 있나요??

    • 머드초보 2008.09.11 17:44  댓글주소  수정/삭제

      안녕하세요~
      2번째 인자는 있어도 되고 없어도 됩니다.
      파라메터가 없는 경우 안넣어도 되겠죠 ^^

  2. IxU 2008.09.12 10:08  댓글주소  수정/삭제  댓글쓰기

    아... 죄송합니다.
    spring버전 문제 였네요.
    제가 사용하고 있던게 1.2.8 이었거든요.
    1.2.8에서는 인자를 한개만 받는 메서드가 없었네요.

    확인도 안해보고 질문드린 점 죄송합니다.
    즐거운 추석 보내세요.^-^

    • 머드초보 2008.09.12 10:40  댓글주소  수정/삭제

      헉 그렇군요 ^^
      1.x버전의 스프링은 사용해보지 않아서 ㅠ
      IxU님도 추석 잘보내세요~^^

 
초간단시리즈-_-;
스프링에 있는 bean을 플렉스에서 가져다가 쓸 수 있어요!
멋져요!-_-;

우선 준비물! 저의 테스트 환경입니다.
Eclipse IDE for Java EE Developers  : http://www.eclipse.org/downloads/
Flex Builder 3 Eclipse Plug-in(로그인후받을 수 있음) :
http://www.adobe.com/cfusion/tdrc/index.cfm?product=flex_eclipse
JDK 6 update 5 : http://java.sun.com/javase/downloads/index.jsp
Apache Tomcat 6.0.16 : http://tomcat.apache.org/download-60.cgi
Spring Framework 2.5.2 : http://www.springframework.org/download
BlazeDS : http://opensource.adobe.com/wiki/display/blazeds/Downloads
Spring과 BlazeDS연동라이브러리 : blazeds-spring-beta1.jar 현재 beta1이군요.
http://www.igenko.org/archiva/repository/igenko/com/adobe/flex/blazeds-spring/
JDK6을 먼저 설치를 합니다.
이클립스는 받아서 그냥 압축을 풀어버립시다.
그리고, 플렉스빌더3 이클립스 플러그인을 설치 합니다.
톰캣은 ZIP버전이면 그냥 압축을 풀어놓고 JAVA_HOME을 잡아줍시다-_-;
스프링프레임워크는 lib파일을 가져다 쓸것이니 아무대나 압축을 풀어놓읍시다.

셋팅이 완료가 되었으면 이클립스를 띄웁시다.
File -> New -> Project선택, Flex Project선택 후 Next
Project이름은 SpringAndBlazeds라고 지어봅시다-_-;
Application Type은 Web Application이라고 하고, Application server type은 J2EE로 선택합니다.
넥스트를 하고 Target runtime에서 Tomcat을 설정해야합니다.
New한다음에 Apache폴더에 Tomcat 6.0을 선택하고, 해당 톰캣의 경로를 지정합니다.
Finish를 클릭하고, flex WAR파일을 선택하라고 하는데 받아놓은 blazeds.war파일을 선택하면 됩니다.
Finish를 클릭하면 끝납니다-_-; 셋팅이 완료가 되었어요!

이제 스프링IDE를 설치해봅시다.
이클립스메뉴에서 Help -> Software Updates -> Find And Install 선택
Search for new features to install를 선택 후 Next
New Remote Site선택 Name은 Spring IDE, url은 http://springide.org/updatesite/ 라고 씁니다.
추가한 것만 체크된 상태에서 Finish클릭!
Search Result에서 Spring IDE선택.
그러면 몇개는 설치 못하는데 설치 못하는 것은 체크해제를 시켜요-_-;
Dependencies에서 Spring IDE Dependencies 체크해제
Integration에서 Spring IDE AJDT Intergration 체크해제
AspectJ Development Tools도 설치하려면 하세요(전 사용할 줄 몰라요^^)
Next -> agree -> finish하면 설치가 됩니다.
설치가 다 되면 이클립스ide를 restart하라고 나와서 리스타트하면 돼요^^

그리고 우리가 만든 프로젝트에  마우스 오른쪽버튼을 클릭해서
Spring Tools -> Add Spring Project Nature선택 하면 완료됩니다.

필요한 라이브러리를 복사해봅시다.
dist/spring.jar : 스프링프레임워크를 쓰기 위해 꼭 필요한 놈.
dist/module/spring-test.jar : 스프링테스트 할 때 필요한 놈.
lib/jakarta-commons/commons-logging.jar : 로그찍을 때 필요한 놈.
lib/ibatis/ibatis-2.3.0.677.jar : ibatis쓸 때 필요한 놈.
lib/cglib/cglib-nodep-2.1_3.jar : Junit으로 테스트 할 때 필요한데, JUnit테스트를 할 때에는 Interface가 구현이 안되어있어서(aop를 사용하려면 interface가 구현이 되어있어야 한다고 하더군요) 필요한 놈.
lib/aspectj/aspectjweaver.jar : aop때문에 필요한 놈 같은데-_-;
lib/junit/junit-4.4.jar : JUnit을 사용하기 위해 필요한 놈.
mysql-connector-java-5.1.5-bin.jar : mysql Connector. db가 다른거면 다른 Connector가 있으면 돼요!
blazeds-spring-beta1.jar : 위에서 설명한 spring과 blazeDS와 연동할 때 필요한 놈.

셋팅은 여기까지-_-;
 
Posted by 머드초보

댓글을 달아 주세요

  1. BlogIcon 지돌스타 2008.06.18 12:46  댓글주소  수정/삭제  댓글쓰기

    좋은 자료예요~

  2. BlogIcon 시난 2008.06.25 14:23  댓글주소  수정/삭제  댓글쓰기

    아주 훌륭한! 도움이 되는! (재밌죠?^^;)
    정말 좋은 자료네요. 저도 오늘 홧김에 함 해보고 있습니다. ㅎㅎ;
    열람료 센스 클릭 꾸욱~

    • 머드초보 2008.06.26 18:11  댓글주소  수정/삭제

      앗 시난님 또 방문해주셔서 감사합니다 ^^
      저거 스프링이랑 BlazeDS 잘 모르고 무작정 따라해서 만든예제라-_-;
      완전 허접해요-_-;
      도움이 되셨다니 다행입니다 ㅠㅠ

  3. 2009.01.20 16:18  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • 머드초보 2009.01.22 00:31  댓글주소  수정/삭제

      http://mudchobo.tomeii.com/tt/238
      글이 분할이 되어있어서요^^
      여기서 보시면 됩니다.

  4. 데이비슨 2009.03.24 11:05  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 플렉스 초보자 데이비슨입니다.
    저는 지금 LCDS를 이용해서 리모트 오브젝트를 사용하고 있는데요.
    지금 하고 있는 것을 스프링 프레임워크로 하려고 하는데
    LCDS에서 blazeds-spring-beta1.jar라이브러리를 사용해도 문제가 없나요.
    샘플을 사용해 보았는데, 돌아가는거 같은데 혹시 LCDS용라이브러리가 따로 있나 해서요!
    답변 주시면 감사하겠습니다.

    • 머드초보 2009.03.25 09:29  댓글주소  수정/삭제

      LCDS에서 사용해도 문제가 아마도 없을 겁니다.
      근데, 최근에 Spring에서 공식적으로 BlazeDS를 지원하기 시작했습니다.
      아마 LCDS에서도 될 듯 싶습니다.(해보진 않았습니다ㅠ)
      그 라이브러리를 사용하셔도 될 겁니다.

    • 데이비슨 2009.03.25 13:17  댓글주소  수정/삭제

      답변 감사합니다. 님글들을 읽고 플렉스의 개념을 잡고 있습니다. 블로그에 좋은 샘플들이 많아서 겁없이 도전해보고 있습니다. 감사합니다. 좋은 하루 되세요.

    • 머드초보 2009.03.27 01:47  댓글주소  수정/삭제

      아 감사합니다. 저는 제가 삽질한 것을 주로 올린거라 옳지 않은 것도 분명 있을 겁니다.
      개념은 책을 보시고 잡으시고, 제 삽질자료는 참조만 해주세요^^
      감사해요~

 
젠장 ^^
이클립스 플러그인으로 Flex Builder를 설치하면 BlazeDS를 사용하기 훨씬 쉬워집니다-_-;
저 아래에 있는 방법은 다 생까고-_-; 다시 해보도록 합시다.

우선 플렉스빌더3 이클립스 플러그인버전으로 받습니다.
플러그인 버전이 없어진 줄 알았는데 저기에 저렇게 써있군요.
Already have Eclipse installed? Download the Flex Builder Eclipse plugin instead.
저거 클릭하고 로그인하면 받을 수 있습니다.

이클립스에 설치를 하도록 합시다 ^^
설치를 하고 이클립스를 띄워 봅시다.
New -> Project -> Flex Project를 선택!
Project name은 HelloBlazeds라고 합시다.
Web Application을 선택하고, Server technology에서 Application server type은 J2EE로 합시다.
Next를 클릭하고 J2EE settings에서 Apache Tomcat v6.0을 설정(없으면 New해서 설정^^)하고
Flex WAR file을 blazeds.war(http://opensource.adobe.com/wiki/display/blazeds/Release+Builds에서 받을 수 있습니다)파일을 선택합니다. Finish를 클릭합니다.

저는 전에 이클립스랑 Flex Builder랑 따로 설치해서 따로 작업을 했는데 저렇게 하면 바로 eclipse에서도 tomcat테스트가 가능합니다 ㅠㅠ 난 왜이렇게 바보 같지-_-;

그러면 이제 짬뽕이 되어있습니다! 참고로 src폴더는 자바소스폴더구요.
flex_src폴더는 flex소스폴더겠죠? ^^

예제는 요 아래에 있는 예제 고대로 따라하시면 될껍니다 ^^
근데 다 소스넣고 실행할라그러면 이상하게 요런 에러가 떠요.
실패 메세지 : faultCode:Client.Error.MessageSend faultString:'Send failed' faultDetail:'Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 404: url: 'http://localhost:8080/WebContent/messagebroker/amf''

보니까 ContextRoot가 이상하게 WebContent로 되어있어요-_-;
바꿔줍시다. HelloBlazeds프로젝트이름에 마우스오른쪽을 대고 properties를 선택합니다.
Flex Server부분이 있습니다. WebContent로 되어있습니다.
HelloBlazeds로 바꿉시다. 그러고 나서 실행해봅시다.
이클립스에 등록된 tomcat에다가 프로젝트를 추가해야합니다. HelloBlazeds라는 프로젝트를 추가를 하고 서버를 실행합시다. 그러고나서 url을 요청합니다.
http://localhost:8080/HelloBlazeds/HelloBlazeds.swf
그러면 이제 될껍니다-_-;

ps1. 저거왜 WebContent로 되어있을까요? 제가 뭘 잘못 한걸까요?-_-;
ps2. BlazeDS를 사용하시려면 이클립스 플러그인으로 플렉스 빌더를 사용하시는게 건강에 좋습니다-_-;
ps3. 에이레네님이 번역한거 읽으러 가야지-_-;
 
Posted by 머드초보

댓글을 달아 주세요

  1. preian 2008.08.25 10:20  댓글주소  수정/삭제  댓글쓰기

    예제는 요아래에있는걸 따라하면 된다고 하셧는데 그 예제가 어디있는지 못찻겠어요 ㅜㅜ

    • 머드초보 2008.08.26 08:31  댓글주소  수정/삭제

      저 위에 검색창에서요. remoteobject라고 쳐보세요 ^^
      뭔가 나올겁니다 ^^
      예제는 blazeds에 포함된 샘플예제를 보시면 더욱 더 잘 나와있습니다^^

  2. BlogIcon 황민혁 2008.10.03 20:55  댓글주소  수정/삭제  댓글쓰기

    이야... 이건 정말 대박인데요~ㅋㅋ
    아래꺼 해보고 바로 했는데.. 실패없이 바로 성공!!!
    정말 좋은 정보 배우고 갑니다~
    그런데.. 플러그인을 설치하면 사용기간제한이 없는건가요?
    빌더를 설치하면 트라이얼 버젼으로 60일이 있던데요~
    만약에 없다면 빌더와 어떤 다른 점이 있는지도 궁금하네요~^^

    • 머드초보 2008.10.03 22:16  댓글주소  수정/삭제

      플러그인은 플렉스 빌더를 단지 이클립스에다가 추가로 설치하는 겁니다.
      그러므로 이것도 트라이얼 버전으로 60일 쓸 수 있을겁니다.
      빌더와 다른 점은 없습니다. 같은 제품인데, 기존에 설치된 이클립스에 설치하는거고 그냥 설치하는 것은 독립적인 플렉스빌더를 설치합니다^^

  3. BlogIcon 리니온 2009.12.29 09:58  댓글주소  수정/삭제  댓글쓰기

    담아갈게요
    질문있는데요 BlazeDB 와 LCDS를 왜 쓰는거죠?
    Flex초보라 배우는 단계라 아무것도 모르겠어요

    • 머드초보 2009.12.31 12:41  댓글주소  수정/삭제

      안녕하세요~
      BlazeDS나 LCDS는 서버데이터와 연동하기 위한 도구라고 보시면 됩니다.
      서버에 있는 데이터를 가져올 때 쉽게 연동할 수 있구요.
      또 다양한 기능이 있는데, 클라이언트 끼리 데이터를 주고 받을 수 있도록 messaging기능도 되구요. lcds에서는 실시간 서버데이터를 푸쉬받을 수 있는 Data Management Service같은 것도 있구요^^
      뭐 결론은 서버연동과 함께 클라이언트+서버를 쉽게 사용해줄 수 있는 도구라고 할 수 있겠네요^^

  4. 2010.07.13 11:49  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • 머드초보 2010.07.21 21:06  댓글주소  수정/삭제

      답변이 늦어서 죄송합니다ㅠㅠ
      BlazeDS는 서버에서 셋팅을 해줘야합니다. lib도 추가해야하고,
      설정파일도 셋팅해야합니다.
      그래서 view단만 하신다면 셋팅이 불가능한데....
      view단만 하신다면 xml로 그냥 httpservice로 받으심이...

 
몰랐는데 AIR에서도 되네요-_-;

우선 http://mudchobo.tomeii.com/tt/211 이거랑
http://mudchobo.tomeii.com/tt/214 이거를 참조하셔서 새로운 blazeds.war를 만들어서 톰캣에 띄워야합니다.

New Project로 만들고, ProjectName을 AirBlazedsTest라고 합시다.
Desktop application을 선택하고 J2EE를 선택하고, 넥스트를 누릅니다 ^^

Server location은 위에 따라했다면 그대로 되어 있을꺼에요^^
Finish를 클릭해줍시다.

AIR에서는 좀 다르게 몇줄을 더 추가해야하는데요.

[code]
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
   layout="absolute">
 <mx:Script> 
  <![CDATA[
   import mx.messaging.ChannelSet;
   import mx.messaging.channels.AMFChannel;  
   import mx.rpc.events.ResultEvent;  
   import mx.rpc.events.FaultEvent;  
   import mx.rpc.remoting.RemoteObject;  
   import mx.controls.Alert;     
   private var startTime:Number;      
   private function resultHandler(event:ResultEvent):void{       
    dg.dataProvider = event.result;  
   }     
   
   private function faultHandler(event:FaultEvent):void{       
    mx.controls.Alert.show("실패 메세지 : " + event.fault.message);  
   }     
   
   private function retrieve():void  {  
    var amfChannel:AMFChannel = new AMFChannel(
     "my-amf", "http://localhost:8080/blazeds/messagebroker/amf");
    var channelSet:ChannelSet = new ChannelSet();
    channelSet.addChannel(amfChannel);
   
    var srv:mx.rpc.remoting.RemoteObject = new RemoteObject();  
    srv.channelSet = channelSet;
    srv.destination = "member";      
    startTime = new Date().time;  
    srv.getElements();       
    srv.addEventListener("result",resultHandler);  
    srv.addEventListener("fault",faultHandler);  
   }    
   
   private function logResult():void  {  
    if (startTime > 0)   {   
     log.text = "" + (new Date().time - startTime) + " milliseconds"; 
    } 
   }   
  ]]>
 </mx:Script>  
 
 <mx:Panel title="AS를 이용한 RemoteObject예" width="100%" height="100%"> 
  <mx:DataGrid id="dg" width="100%" height="100%"                 
   updateComplete="logResult()"/>  
  <mx:ControlBar>   
   <mx:Button label="데이터 가져오기" click="retrieve()"/>  
   <mx:Label id="log"/>  
  </mx:ControlBar>
 </mx:Panel>
</mx:WindowedApplication>
[/code]

사용자 삽입 이미지


AIR에서도 돼요-_-; 레몬펜그은부분만 추가를 해주시면 돼요 ^^
 
Posted by 머드초보

댓글을 달아 주세요

  1. 2008.01.31 20:34  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • BlogIcon 머드초보 2008.02.01 00:24  댓글주소  수정/삭제

      너무 감사합니다 ㅠㅠ
      눈물이 앞을 가려요 ㅠㅠ
      방명록은 상단에 있답니다 ^^
      우선 카페가입했습니다. 너무 감사드려요!
      열심히 하겠습니다!!!

    • 이성민 2008.02.05 00:31  댓글주소  수정/삭제

      모야 내이름은? 나도 이곳을 주시 하고 있다는거 모르나? ㅋㅋㅋ 왜 없어 내이름!!! ㅋㅋ 얼렁 적어넣어라

    • BlogIcon 머드초보 2008.02.05 08:16  댓글주소  수정/삭제

      -_-; 나중에 다른 예제가 있으면 넣어주마-_-;

  2. BlogIcon 옹씨루 2008.02.21 00:43  댓글주소  수정/삭제  댓글쓰기

    유익한 정보 감사합니다~

  3. BlogIcon 고고마 2008.12.01 16:12  댓글주소  수정/삭제  댓글쓰기

    음.. 전 weblogic9.2와 LCDS2.5.1을 써서 동일하게 해봤는데요. remoting-config.xml 부분을 고치게 되면
    weblogic에서는 console에서 디플로이를 시켜서 flex.war를 갖다가 자동으로 사용하는데
    다시 고친다면 flex.war를 다시 이클립스에서 열어서 고치고 export를 시킨 후 다시 디플로이 시켜야 실행이 되려나요.
    실패 메세지 :
    faultCode:Server.Processing faultString:'No destination with id 'member' is registered with any service.' faultDetail:'null'
    위의 메시지가 자꾸 뜨는데.. service등록이 안되었다는 건데 후우.. 하루종일 이러고 있네요 ㅠㅠ

    • 머드초보 2008.12.02 17:45  댓글주소  수정/삭제

      음.....뭔가 null이라는 얘기인 듯 한데요.
      웹로직에서 안해봐서 잘 모르겠네요 ㅠㅠ

  4. BlogIcon 고고마 2008.12.03 10:32  댓글주소  수정/삭제  댓글쓰기

    오 되었어요 ^^; AMF 웹루트 경로를 제가 잘못 썼네요 아우 기분좋네요 ! 엉뚱한 것만 찾고 있었네요

  5. 컴온예 2009.02.15 15:58  댓글주소  수정/삭제  댓글쓰기

    정말 많은 도움이 됐네요!!
    다들 대단한 실력자들이신가봐요.

    지돌스타, 머드초보, 에이레네 등등...
    부럽습니다.

    많은 도움받아가요...

    • 머드초보 2009.02.16 18:11  댓글주소  수정/삭제

      도움이 되셨다니 다행이네요^^
      근데 전 실력자가 아닙니다-_-; 저 실력자분들에 비하면 뭐 아무것도 아닙니다-_-;
      방문해주셔서~ 감사해요 ^^

  6. 2009.08.21 10:03  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • 머드초보 2009.08.23 19:27  댓글주소  수정/삭제

      안녕하세요~
      제가 이해를 잘 못했는데요-_-
      우선 데이터를 Flex컴포넌트 tree에 맞게 보여주려고 하시는건가요?
      BlazeDS는 데이터를 연동하는 것입니다.
      remoteobject를 이용해서 tree에 맞는 데이터를 가져오면 잘 될 듯한데요-_-
      죄송해요 이해가 잘 안되네요 ㅠㅠ

 

우선 MySQL에 DB가 있어야겠죠?
[code]
CREATE TABLE `Member_List` (
  `ID` varchar(10) NOT NULL,
  `Password` varchar(10) NOT NULL,
  `Name` varchar(10) NOT NULL,
  `Age` int(2) NOT NULL,
  `Sex` varchar(2) NOT NULL,
  `Tel` varchar(12) NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=euckr COMMENT='회원 멤버 리스트입니다.';

INSERT INTO `Member_List` (`ID`, `Password`, `Name`, `Age`, `Sex`, `Tel`) VALUES
('mudchobo', '1234', '성종천', 25, '남', '01000000000'),
('k1011606', '1234', '강현욱', 24, '남', '01000000000'),
('shs8326', '1234', '성현식', 58, '남', '01000000000'),
('jor0737', '1234', '조옥렬', 49, '여', '01000000000'),
('boazzang', 'boalove', '보아짱', 30, '여', '0100000000'),
('webserv', 'babo', '웹서비스', 45, '남', '01000000000'),
('child', 'ggoma', '꼬마', 15, '여', '01000000000'),
('mudcosdf', '1234', '성종텬', 99, '남', '01000000000');
[/code]
자바클래스를 작성해봅시다.

그리고 blazeds프로젝트에 WebContent/WEB-INF/lib에 mysqlconnector넣는거 잊지마세요 ^^

blazeds프로젝트 아래 Java Resources: src부분에서 패키지를 만듭시다.
flex.member라는 패키지를 만들고, MemberVo라는 클래스를 생성해봅시다.
[code]
package flex.member;

public class MemberVo {
 String id;
 String password;
 String name;
 int age;
 String sex;
 String tel;
 
 public String getId() {
  return id;
 }
 public void setId(String id) {
  this.id = id;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 }
 public String getTel() {
  return tel;
 }
 public void setTel(String tel) {
  this.tel = tel;
 }
}
[/code]
위와 같은 bean을 만듭시다.

그리고 DB와 연동하는 놈인 MemberService라는 클래스를 만들어봅시다.
[code]
package flex.member;

import java.util.ArrayList;
import java.util.List;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import flex.member.MemberVo;
public class MemberService {
 public List<MemberVo> getElements() throws SQLException {
  long startTime = System.currentTimeMillis();
  try {
   Class.forName("com.mysql.jdbc.Driver");
  } catch (ClassNotFoundException e) {
  }
  Connection con = null;
  List<MemberVo> list = new ArrayList<MemberVo>();
  String sql = "SELECT * FROM Member_List";
  try {
   String url = "jdbc:mysql://MYSQL디비주소/db이름";
   con = DriverManager.getConnection(url, "db계정id", "db계정비밀번호");
   PreparedStatement stmt = con.prepareStatement(sql);
   ResultSet rs = stmt.executeQuery();
   while (rs.next()) {
    MemberVo mb = new MemberVo();
    mb.setId(rs.getString("Id"));
    mb.setPassword(rs.getString("Password"));
    mb.setName(rs.getString("Name"));
    mb.setAge(rs.getInt("Age"));
    mb.setSex(rs.getString("Sex"));
    mb.setTel(rs.getString("Tel"));
    list.add(mb);
   }
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   try {
    con.close();
   } catch (Exception ignored) {
   }
  }
  System.out.println("Service execution time: "
    + (System.currentTimeMillis() - startTime));
  return list;
 }
}
[/code]
다 만들었으면 config를 수정해야해요.
blazeds프로젝트아래 WebContent/WEB-INF/flex/remoting-config.xml를 열어봅시다. service태그 안에 추가합시다.
[code]
<destination id="member"> 
  <properties>  
   <source>flex.member.MemberService</source> 
  </properties>
 </destination>
[/code]
이제 다 완성되었어요. export를 해야죠. Overwrite existing file에 체크를 하고, 톰캣디렉토리/webapp/blazeds.war를 선택합니다.
Finish를 클릭하고 톰캣을 가동시켜줍시다.

이제 Flex Builder로 갑시다. 여기서 이제 저 MemberService클래스에 있는 getElements()메소드를 불러올꺼에요.
New Project에서 Flex Project를 선택합니다.
Project name은 BlazedsTest라고 하고 Web application선택, Application server type은 J2EE로 선택하고 다음!
Server location에서 User default ~~~ 어쩌구 체크해제하구 blazeds로 설정합시다.
Root folder는 톰캣디렉토리/webapps/blazeds를 선택
Root URL은 http://localhost:8080/blazeds/
Context root는 blazeds
Validate Configuration클릭해서 제대로 되면 돼요(톰캣이 가동되어 있어야 돼요 ^^)
가볍게 Finish를 눌러줍시다 ^^

BlazedsTest.mxml에 이렇게 작성합시다.
[code]
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 <mx:Script> 
  <![CDATA[  
   import mx.rpc.events.ResultEvent;  
   import mx.rpc.events.FaultEvent;  
   import mx.rpc.remoting.RemoteObject;  
   import mx.controls.Alert;     
   private var startTime:Number;      
   private function resultHandler(event:ResultEvent):void{       
    dg.dataProvider = event.result;  
   }     
   
   private function faultHandler(event:FaultEvent):void{       
    mx.controls.Alert.show("실패 메세지 : " + event.fault.message);  
   }     
   
   private function retrieve():void  {  
    var srv:mx.rpc.remoting.RemoteObject = new RemoteObject();  
    srv.destination = "member";      
    startTime = new Date().time;  
    srv.getElements();       
    srv.addEventListener("result",resultHandler);  
    srv.addEventListener("fault",faultHandler);  
   }    
   
   private function logResult():void  {  
    if (startTime > 0)   {   
     log.text = "" + (new Date().time - startTime) + " milliseconds"; 
    } 
   }   
  ]]>
 </mx:Script>  
 
 <mx:Panel title="AS를 이용한 RemoteObject예" width="100%" height="100%"> 
  <mx:DataGrid id="dg" width="100%" height="100%"                 
      updateComplete="logResult()"/>  
  <mx:ControlBar>   
   <mx:Button label="데이터 가져오기" click="retrieve()"/>  
   <mx:Label id="log"/>  
  </mx:ControlBar>
 </mx:Panel>
</mx:Application>
[/code]
그런다음 실행하면 아래와 같은 창이 뜨고 Button클릭하면 끝입니다.

사용자 삽입 이미지


이렇게 하는게 맞나-_-; 아닌것같아요. 너무 복잡해요-_-; 더 쉬운방법이 있을것같은데...-_-;

 
Posted by 머드초보

댓글을 달아 주세요

  1. 이전 댓글 더보기
  2. 네버다이 2008.02.05 09:41  댓글주소  수정/삭제  댓글쓰기

    저도 member쪽을 못찾나 싶어서 remoting-config.xml destination 쪽하고 오타하고 설정쪽 싹다 확인해 보았는데 안되서요.

    혹시 버전업이 되면서 또다른 설정을 해야되나 싶어 문서도 찾아봤는데 요거 관련한 문서는 못찾았네요. ^^

    머드초보님 답변 감사드리구요. 새해 복 많이 받으세요~

  3. 네버다이 2008.02.05 10:57  댓글주소  수정/삭제  댓글쓰기

    아... 혹시 jdk1.5.0 tomcat 5.5.25 버전이 문제가 될까요?

    5,6 확인해도 똑같네요.

    • BlogIcon 머드초보 2008.02.05 17:13  댓글주소  수정/삭제

      버전이 문제가 있을 수도 있을 것 같습니다.
      blazeds안에 tomcat이 있는데 보면 6.0입니다.
      저는 테스트시에 tomcat6.0과 jdk1.6.0 u3에서 테스트를 해봤습니다. ^^

  4. 네버다이 2008.02.11 09:55  댓글주소  수정/삭제  댓글쓰기

    저도 동일한 환경만들어서 한번해봐야 겠네요.

  5. BlogIcon 에이레네 2008.02.12 01:28  댓글주소  수정/삭제  댓글쓰기

    더 쉽게 하는 법 없지 않나요 ㅋㅋㅋ 이게 최소 코딩인데 ㅠ_ㅠ

  6. BlogIcon 에이레네 2008.02.13 02:57  댓글주소  수정/삭제  댓글쓰기

    http://labs.adobe.com/technologies/blazeds/

    여기 보니 최소 사양으로 톰캣은 Tomcat 6.0.14 을 요구하고 있네요 ^^ LCDS는 톰캣 5에서도 잘 돌아가는데 ㅠㅠ 저도 톰캣 5.5 에서 돌려보니 안돼서 찾아보니 최소 6.0.14네여 ㅋㅋㅋ 그냥 주는대로 테스트할걸 ㅋㅋ

    • BlogIcon 머드초보 2008.02.13 23:13  댓글주소  수정/삭제

      아하 그렇군요 ^^
      저는 최신버전을 좋아해서-_-;
      항상 테스트도 최신버전으로 하다보니 ^^
      최소사양도 있군요.
      좋은 정보 감사합니다 ^^

  7. 네버다이 2008.02.15 16:11  댓글주소  수정/삭제  댓글쓰기

    blazeds.zip 안에 samples.war 파일 돌려보면 jdk1.5 톰캣 5.5.23에서 잘돌아가는데

    위내용 코딩해서 넣으면 계속 id를 못찾네요. ㅡ.ㅡa

    • BlogIcon 머드초보 2008.02.15 18:13  댓글주소  수정/삭제

      아....그렇군요 ㅠㅠ
      샘플은 돌아가는군요....
      혹시 그러면 LCDS 2.5에서도 되는지 해보시겠어요?
      이게 된다면....버전문제가 맞을듯해요-_-;

  8. 네버다이 2008.02.16 12:53  댓글주소  수정/삭제  댓글쓰기

    이참에 최신버전으로 다 올리고 해봤습니다. 일단 성공하고 아래버전으로 내려가 볼려구요. ^^
    jdk 1.6 , tomcat 6.0.14 , lcds251-win.exe ,flex builder beta 3 환경에
    상기 소스 그대로 복사해서 java컴파일(eclipse 3.2 wtp), mxml컴파일(fb3)한다음
    lcds251 내의 flex.war 파일을 톰캣 webapps 에 푼다음
    그안에 java class,컴파일된 .swf, 설정파일 세팅해도 안되네요.
    에러메세지는 전과 동일하구요.

    실패 메세지 : faultCode:InvokeFailed faultString:'[MessagingError message='Destination 'member' either does not exist or the destination has no channels defined (and the application does not define any default channels.)']' faultDetail:'Couldn't establish a connection to 'member''

    혹시 mxml컴파일 할때 builder에 환경쪽에 뭐 잡아줘야 할 것이 있는지요?
    가령 build path 항목에 source path나 lib path에 lcds쪽에 무언가를 추가시켜줘야 한다거나...
    참고로 FLEX_HOME 환경변수에는 N:\FLEX\flex_sdk_2_hf1 가 잡혀있으나 이쪽은 무관한거 같구요.
    예제 한번 성공하기 디기 힘드네요.. ^^
    그럼 좋은 주말되세요~

    • BlogIcon 머드초보 2008.02.18 18:21  댓글주소  수정/삭제

      저는 별다른 셋팅이 없었습니다.
      이상하네요. 수정해야할 부분은 flex.war파일 안에있는 remoting-config.xml파일 하나인데요.
      저 메시지는 member라는 destination이 채널에 정의가 안되어있는 듯합니다. ^^

  9. BlogIcon 지돌스타 2008.02.19 12:46  댓글주소  수정/삭제  댓글쓰기

    좋은 글 잘보고 갑니다.

    • BlogIcon 머드초보 2008.02.20 17:23  댓글주소  수정/삭제

      아네 감사합니다 ^^
      지돌스타님께서 방문해주셔서 영광이에요 ^^
      스타플 요즘 열심히 하고 있어요!!!
      재미있고 신기한 서비스라서 ^^ 원래 신기한걸좀 좋아합니다 ^^
      앞으로 정식 오픈까지 화이팅입니다 ^^

  10. 네버다이 2008.02.19 16:00  댓글주소  수정/삭제  댓글쓰기

    remoting-config.xml 에 정의는 물론 되어 있구요.. ^^

    별다른게 없는데 왜 이렇게 속을 썩이는 것인지... 또 찾아봐야겠네요.

  11. 네버다이 2008.02.20 17:33  댓글주소  수정/삭제  댓글쓰기

    머드초보님 드디어 성공했네요.
    jdk1.5 tomcat.5.5,23, fb 3 beta 3환경에서 했구요. blazeds,lcds es 버전에서 다 해보았는데 잘되네요.
    관건은 제가 따로따로 만들어서 해서 안된거 였습니다.
    글데로 프로젝트에서 lcds로 잡고 했으면 되었을텐데
    그냥 기본 mxml 프로젝트 잡아서 거기서 코딩해서 컴파일된 swf를 /컨텍스트에 넣었거든요.
    내부적으로 컴파일하는 방식에 차이가 있는거 같네요.
    fb2 버전에서도 한번해봐야겠네요.
    그럼 수고하세요.

    • BlogIcon 머드초보 2008.02.20 17:24  댓글주소  수정/삭제

      오! 그렇군요! 축하드립니다 ^^
      아....그게 프로젝트를 만들 때 blazeDS를 설정해주는데 그래서 따로하면 안되는건가봐요. 저도 뜯어보지 않아서 원리는 잘몰르겠네요 ㅠㅠ
      어쨌든 매번 방문해주셔서 감사하구요~
      앞으로도 잘 되시길~ ^^ 수고하세요~

  12. 네버다이 2008.02.20 17:43  댓글주소  수정/삭제  댓글쓰기

    네. 자주 들릴께요~
    감사하다니요. 제가 더 감사드리죠. 이렇게 좋은 자료 올려주셔서 많은 도음이 되었습니다.
    그리고 제 홈피에 삽질내용 쓴다고 내용일부 좀 긁어갔어요. ^^a

  13. 네버다이 2008.02.20 17:56  댓글주소  수정/삭제  댓글쓰기

    머드초보님 이건 별개글인데요.
    호스팅이 받으시는 곳이 tomeii.com 인데
    여기가 php,jsp까지 지원이 되네요. 무료인지 유료인지는 모르겠으나 회원가입도 안되구요.
    무료인가요? jsp까지 지원이라면 상당히 메리트가 있는데 말이죠...
    무료라면 얼른 가입하고 싶은데 회원가입이 안되네요..

    • BlogIcon 머드초보 2008.02.20 23:58  댓글주소  수정/삭제

      아직 신규회원을 받지 않고 있습니다.
      http://www.theeye.pe.kr/ 이 블로그 주인인 아이군이 tomeii의 주인인데요.
      신규회원을 받지 않는 것으로 알고있습니다 ^^
      나중에 모집한다고 하네요
      아이군에게 문의해보세요 ^^
      아그리고 서버운영을 자기 돈으로 하는 걸루 알고 있어요 ^^ 무료라는얘기죠 ^^

  14. 네버다이 2008.02.21 10:11  댓글주소  수정/삭제  댓글쓰기

    그렇군요. 다음에 한번 문의해봐야 겠네요.
    좋은 하루되세요~

  15. BlogIcon 황민혁 2008.10.03 20:28  댓글주소  수정/삭제  댓글쓰기

    우와..... 정말 감사합니다~

    몇시간동안을 이런저런 자료 보면서 헤매고 있어는데.. 드디어 되네요~

    그런데 뒤에 쓰신글을 보니 플러그인으로 한게 있던데.. 그것도 해봐야겠어요~ㅋ

    • 머드초보 2008.10.03 22:14  댓글주소  수정/삭제

      앗~ 도움이 되셨다니 다행입니다.
      플러그인으로 하시는 게 더 좋습니다^^
      디버깅도 쉽게 할 수 있구요^^

  16. 박병일 2008.10.15 12:43  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 잘 보았습니다.
    완전 초보라 잘 이해가 안되어서 질문드릴께요. ^^

    blazeds프로젝트에 WebContent/WEB-INF/lib에 mysqlconnector 넣으라고 하셨는데.
    mysqlconnector가 무언지 모르겠습니다. 허접한 질문올려서 죄송합니다. ^^;;

    • 머드초보 2008.10.15 21:29  댓글주소  수정/삭제

      Connector가 있어야 MySQL을 접속할 수 있습니다.
      Driver같은건데요. 접속할 수 있는 라이브러리라고 보면 됩니다.
      http://dev.mysql.com/downloads/connector/j/5.1.html
      여기서 받으시면 되구요.
      만약 오라클을 하신다면 오라클 홈페이지에 있는 jdbc드라이버를 받으셔야겠죠^^

  17. 그래잇 2008.12.17 14:21  댓글주소  수정/삭제  댓글쓰기

    머드초보님 덕분에 공부 잘하고 있습니다.^^
    여쭤볼께 있어서요. 실행결과에 실행시간이 나오는데 DataGrid에 결과 값이 안보이네요.
    어케해야할지 조언 좀 부탁드림니다

    • 머드초보 2008.12.19 11:33  댓글주소  수정/삭제

      안녕하세요!
      음...소스를 봐야지 알 것 같은데요 ^^
      답장 주세요~ ^^

  18. 그래잇 2008.12.19 15:42  댓글주소  수정/삭제  댓글쓰기

    감사합니다.^^ 오라클 디비 쓰는데 다시하니 잘나옵니다.
    수고하세요~~^^

  19. 천자 2009.08.04 09:56  댓글주소  수정/삭제  댓글쓰기

    초보 입니다.
    "blazeds프로젝트아래 WebContent/WEB-INF/flex/remoting-config.xml를 열어봅시다." 라고 하셨는데
    이는 폴더를 flex 폴더를 한들고 remoting-config.xml 파일을 만들어 주어야 한다는 것인가요?

    자바 아니면 해당 파일이 자동으로 생기나요?
    자바쪽에 VO.java Service.java, flex/remoting-config.xml 세개가 필요 하고 flex 쪽에 .mxml하나면 되나요? 조언 부탁 드립니다.

    • 천자 2009.08.04 11:09  댓글주소  수정/삭제

      앗... 이건 LCDS를 설치해야 생기는 거군요. 쯥...
      여튼 감사.

    • 머드초보 2009.08.07 23:33  댓글주소  수정/삭제

      blazeDS와 LCDS는 remoting-config.xml같은 설정은 동일합니다^^
      blazeDS도 받으면 있습니다^^

  20. BlogIcon 황연 2009.10.03 15:32  댓글주소  수정/삭제  댓글쓰기

    머드초보님. 저도 똑같이 다 따라했는데요..

    다 이상없는듯했는데 Datagrid에 내용이 안뿌려지네요..

    위에보니 접속 속도만 나왔었다고했던분처럼 되는데..

    저는 다시해도안되요..ㅠㅠ

    mysql connector는 그냥 받아서 jar파일만 lib폴더에 넣으면 되는거죠????

    글구 uri쪽은 "jdbc:mysql://localhost:3306/mysql" 이런식으로 해놓았구요..

    소스는 머드초보님소스 긁어다해서.. 이상이 없을거같은데.. 무엇이 문젤까요??

    ㅠㅠ

  21. flex초보 2009.10.26 20:37  댓글주소  수정/삭제  댓글쓰기

    데이타 가져오고 난 후 한글이 깨져서 나오는데 어떻게 해야하나요?

    • 머드초보 2009.10.29 12:34  댓글주소  수정/삭제

      한글깨짐 문제는 백빵 인코딩 문제인 듯 한데.....
      DB인코딩을 한번 확인해보세요
      그냥 일반 자바에서 디버깅을 해봐서 한글이 깨지는지 확인해보세요^^
      거기서도 깨지면 FLEX문제가 아닌 서버단 인코딩 문제일 듯.
      아님 UTF8이 아니라 EUC-KR로 던지면 문제가 될 듯한데요.
      FLEX는 무조건 UTF8로 읽거든요.