이제 Manager클래스를 만들어봅시다.
실제로 BlazeDS를 이용해서 가져오는 놈은 이 Manager클래스가 되겠죠^^

Java Resources: src에서 오른쪽버튼 클릭하고, New를 해서 interface를 구현합니다.
[code]
package springapp.service;

import java.util.List;
import springapp.domain.Product;

public interface ProductManager {
 public List<Product> getProducts();
}
[/code]
getProducts라는 메소드가 하나 있군요! 구현해봅시다!!!
[code]
package springapp.service;

import java.util.List;

import springapp.dao.ProductDao;
import springapp.domain.Product;

public class ProductManagerImpl implements ProductManager {

 private ProductDao productDao;
 
 @Override
 public List<Product> getProducts() {
  return productDao.getProductList();
 }

 public void setProductDao(ProductDao productDao) {
  this.productDao = productDao;
 }
}
[/code]
getProducts라는 함수는 Dao에서 getProductList를 호출하는 놈이네요.
요 아래에는 setter가 있네요. 이건 spring에서 DI를 하기위해 존재하는 setter입니다^^
서비스도 완성이 되었네요! 이제 설정파일을 작성해봅시다.

applicationContext.xml
[code]
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:p="http://www.springframework.org/schema/p"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 http://www.springframework.org/schema/aop
 http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
 http://www.springframework.org/schema/tx
 http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

 <!-- Enable @Transactional support -->
 <tx:annotation-driven />

 <!-- Enable @AspectJ support -->
 <aop:aspectj-autoproxy />

 <aop:config>
  <aop:advisor pointcut="execution(* *..ProductManager.*(..))"
   advice-ref="txAdvice" />
 </aop:config>

 <tx:advice id="txAdvice">
  <tx:attributes>
   <tx:method name="save*" />
   <tx:method name="get*" read-only="true" />
  </tx:attributes>
 </tx:advice>

 <bean id="productManager"
  class="springapp.service.ProductManagerImpl">
  <property name="productDao" ref="productDao" />
 </bean>

</beans>
[/code]
Dao부분의 설정파일인 applicationContext-ibatis.xml파일을 봅시다.
applicationContext-ibatis.xml
[code]
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:p="http://www.springframework.org/schema/p"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

 <bean id="propertyConfigurer"
  class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
  p:location="classpath:properties/jdbc.properties" />

 <bean id="dataSource"
  class="org.springframework.jdbc.datasource.DriverManagerDataSource"
  p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}"
  p:username="${jdbc.username}" p:password="${jdbc.password}" />

 <!-- Transaction manager for iBATIS Daos -->
 <bean id="transactionManager"
  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource" />
 </bean>

 <!-- SqlMap setup for iBATIS Database Layer -->
 <bean id="sqlMapClient"
  class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <property name="configLocation"
   value="classpath:springapp/dao/SqlMapConfig.xml" />
 </bean>

 <!-- Add additional Dao definitions here -->
 <bean id="productDao"
  class="springapp.dao.ProductDaoImpl">
  <property name="sqlMapClient" ref="sqlMapClient" />
 </bean>
 
</beans>
[/code]
jdbc.properties파일은 properties라는 package를 만들고, jdbc.properties파일을 넣어버립시다.
[code]
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://DB주소
jdbc.username=DB아이디
jdbc.password=DB비밀번호
[/code]
이 설정들의 bean들의 관계를 보고 싶다면-_-;
Spring Elements에서 오른쪽버튼 클릭하고 properties를 선택.
Bean Support를 선택, Add한 뒤 두개의 설정파일(applicationContext.xml, applicationContext-ibatis.xml)선택.
Config set에서 New하고 Name에 applicationContext라고 하고, 두개다 체크 오케이~
그럼 이제 스프링 설정파일에서 에러를 찾아낼 수 있어요!
bean들의 관계를 그래프로도 볼 수 있네요!
Config set에 추가한 applicationContext에다가 마우스오른쪽버튼을 클릭하면 open graph로 볼 수 있어요!

이제 클라이언트 구현으로....다음 시간에-_-;

 
Posted by 머드초보

댓글을 달아 주세요

  1. 가을우체국 2010.01.21 17:47  댓글주소  수정/삭제  댓글쓰기

    안녕하세요?? 위에 있는 내용으로 작성 실행을 해보려고 하니
    아래에 있는 코드가 오류가 나네요.ㅠㅠ

    <bean id="productDao"
    class="springapp.dao.ProductDaoImpl">
    <property name="sqlMapClient" ref="sqlMapClient" />
    </bean>

    Build path is incomplete. Cannot find class file for com/ibatis/sqlmap/client/SqlMapClient 이란
    오류가 왜 나는지 알수가 없어서 글을 남겨 봅니다..ㅠㅠ

    혹 가능하심 함 봐주세요.. (네이트 :maroon0@nate.com )

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

      그 클래스를 못찾는 것 보니....
      iBATIS라이브러리파일이 없는 것 같은데요.
      ibatis~~~.jar파일을 혹시 넣으셨나요?

  2. 모라이 2010.07.14 10:28  댓글주소  수정/삭제  댓글쓰기

    설정파일 applicationContext.xml에서
    <bean id="productManager" class="springapp.service.ProductManagerImpl">
    <property name="productDao" ref="productDao" />
    </bean> 이 부분에 아래와 같은 에러가 납니다.
    No setter found for property 'productDao' in class 'springapp.service.ProductManagerImpl'
    setter가 없다는거 같은데 ProductManagerImpl소스 안에
    public void setProducts(ProductDao productDao){
    this.productDao = productDao;
    }//setProducts
    setter 잘 있거등요 ㅠㅠ 왜이런지 모르겠어오. 도움 부탁드립니다~

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

      아.....습흐링을 안하지 꽤 되어서...-_-
      일단....몬가 셋팅오류인 듯 합니다.
      저도 스프링할 때 많은 에러를 봐왔는데...
      일단은...저도 해보질 않아서 잘 모르겠네요 ㅠㅠ

 
우선 기본적으로 솔라리스10에는 MySQL이 설치가 되어있더군요-_-;
몰랐습니다. 걍 지우고 다시 깔아봅시다. 원래 삽질을 좋아해서-_-;

pkgrm으로 mysql 지워버립시다-_-;(이래도 되나-_-;)

다시 깔아봅시다.
http://dev.mysql.com/downloads/ 이곳에서 MySQL 솔라리스 pkg용으로 받습니다.
Solaris (pkgadd packages) 이눔인 것 같습니다.

우선 mysql계정을 만들어야 돼요.
[root][/] groupadd mysql
[root][/] useradd -g mysql mysql
[root][/] passwd mysql
새 암호:
새 암호를 다시 입력하십시오:
passwd: 암호(mysql용)가 성공적으로 변경되었습니다.

mysql이라는 그룹을 추가하고 mysql이라는 사용자를 추가하고 그룹은 mysql로 하고 비밀번호를 바꿔줍시다.
아.....그리고 mysql이라는 계정에 디렉토리가 아마 /home/mysql로 되어있는데요.
home아래에 이상하게 디렉토리가 안만들어지드라구요. 그래서 /user/mysql/ 이라는 디렉토리를 만들고
소유자를 mysql로 바꿨습니다.

[root][/]mkdir /user/mysql/
[root][/]chown mysql /user/mysql/
[root][/]cd /user/mysql/
[root][/user/mysql]ls -al
총 4
drwxr-xr-x   2 mysql    root         512  1월 18일  18:37 ./
drwxr-xr-x   4 root     root         512  1월 18일  18:37 ../
[root][/user/mysql]vi /etc/passwd/

mysql:x:101:100::/user/mysql:/bin/csh  #홈디렉토리변경 및 쉘도 변경

받은다음에 서버에 올려서 gunzip으로 풀고, pkgadd로 패키지를 설치합시다. 당근 root계정으로 ^^
[root][/user/mudchobo]gunzip mysql-5.0.45-solaris10-i386.pkg.gz
[root][/user/mudchobo]pkgadd -d mysql-5.0.45-solaris10-i386.pkg

이제 막 설치가 되는데요. 다되었으면 "<mysql>(이)가 성공적으로 설치되었습니다." 라고 떠요.
기본으로 /usr/local/mysql/ 에 설치가 되어있습니다.

설정파일을 만들어야하는데요.  /etc/my.cnf 에다가 만듭니다.
[root][/user/mudchobo]vi /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /user/mysql/data
datadir은 mysql 홈디렉토리아래에 data디렉토리로 설정해두시면 됩니다.
저의 홈디렉토리는 /user/mysql/ 이어서 저렇게 설정한 겁니다.

mysql이 어느경로에서도 실행될 수 있게 PATH를 잡아줍시다.
기존 PATH에 /usr/local/mysql/bin 이눔도 추가해줍시다.

csh에서는 setenv PATH {$PATH}:/usr/local/mysql/bin 이런식으로 합니다.

그다음 가장먼저 실행해야할 mysql_install_db를 실행해야합니다.
[root][/] cd /usr/local/mysql/scripts
[root][/opt/mysql/mysql/scripts]ls
mysql_install_db*           mysql_install_db.in         mysql_install_db.old.1208*  mysql_install_db.old.1731*
[root][/opt/mysql/mysql/scripts] ./mysql_install_db --user=mysql --ldata=/user/mysql/data

라고 해주면 됩니다. 자 이제 mysql을 띄워 봅시다. mysql은 mysql계정으로 들어가서 띄워야합니다.
[mysql][/user/mysql] mysqld &
[1] 1516
[mysql][/user/mysql] 080118 19:07:17  InnoDB: Started; log sequence number 0 43655
080118 19:07:17 [Note] mysqld: ready for connections.
Version: '5.0.45'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)
[mysql][/user/mysql]

mysql에 접속해봅시다. root비밀번호가 처음에는 설정되어 있지 않습니다. password없이 접속됩니다.
[mysql][/user/mysql] mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.45 MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>


mysql 비밀번호 변경하는 방법은 2가지가 있네요(더 있을 수도 있을지도^^)

1. mysqladmin을 이용해서 하는방법
[mysql][/user/mysql] mysqladmin -u root password '비밀번호'


2. mysql에 mysql -u root 로 접속해서 변경하는 방법(이건 차후에 변경할 때도 쓰이겠죠^^)

[mysql][/user/mysql] mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.0.45 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('비밀번호');
Query OK, 0 rows affected (0.01 sec)



이제 사용자를 추가해봅시다.

mysql> GRANT ALL PRIVILEGES ON *.* TO 'myid'@'%' IDENTIFIED BY 'mypasswd' WITH GRANT OPTION;
Query OK, 0 rows affected (0.02 sec)
mysql>

저기 %로하셔야 어디서든 접속이 가능한 계정으로 만들어집니다. localhost로하면 local에서 밖에 접속을 못합니다.

mysql을 종료시켜봅시다.
[mysql][/user/mysql] mysqladmin -uroot -p1234 shutdown
080118 19:27:18 [Note] mysqld: Normal shutdown
080118 19:27:18  InnoDB: Starting shutdown...
080118 19:27:20  InnoDB: Shutdown completed; log sequence number 0 43655
080118 19:27:20 [Note] mysqld: Shutdown complete
[mysql][/user/mysql]

아....잘되네요

두리야 다 정리했다 어셔 시도해보거라-_-;
 
Posted by 머드초보

댓글을 달아 주세요

 

저도 웹2.0에 뒤쳐지지 않기 위해서 flex를 공부하려고 합니다-_-; 우선 개발환경을 만들어봅시다.

준비물입니다.

JDK 6u2
http://java.sun.com/javase/downloads/index.jsp

Tomcat6.0
http://tomcat.apache.org/download-60.cgi

Flex Builder 2 (요고이 유료입니다! 돈내고 사셔야합니다-_-; 평가판 주소입니다.)
아래 사이트를 들어가셔서 adobe홈페이지에 가입하고 다운로드 하셔야합니다.
https://www.adobe.com/cfusion/tdrc/index.cfm?product=flex&loc=ko

LiveCycle DataService ES Express(원래 이름이 Flex DataService 2인가 그랬을 껍니다-_-;)
이건 Express버전으로 하면 무료입니다. 아래사이트도 로그인 후 다운로드 가능합니다.
http://www.adobe.com/cfusion/entitlement/index.cfm?e=lcds26_td

준비물이 다 되었으면 설치를 해 봅시다.
JDK는 뭐 다음신공으로 설치를 해줍시다.

Tomcat은 6.0으로 설치 버전이든, zip버전이든 어떻게든 설치를 해서 서버만 돌아가도록 합시다-_-;
zip버전에서는 JAVA_HOME이라는 환경변수가 있어야합니다. 자바가 설치된 디렉토리를 지정해주면 됩니다.

Flex Builder 2설치할 때  두개 중 한개를 선택하라는 부분이 있는데요.

사용자 삽입 이미지

위와 같이 나오는데
첫번째는 Flex Builder를 그냥 설치하겠다는 것인데 즉 자체적인 이클립스를 사용한다는 겁니다.
두번째는 기존에 사용하던 이클립스를 플러그인 형식으로 설치를 해서 기존의 이클립스를 사용한다는 겁니다.
첫번째로 하도록 합시다. 그냥 따로 씁시다-_-;

그다음 뭐 그냥 다음 신공으로 설치를 합시다.

LiveCycle Data Services는 설치할 때 Installation Options에서
사용자 삽입 이미지

두가지 선택문이 나오는데
첫번재는 JRun이라는 서버를 사용하겠다는 것이고,
두번째는 J2EE용 web application을 사용하겠다는 것인데, 톰캣을 써야하기 때문에 두번째꺼를 선택합시다.
(JRUN은 안해봤습니다-_-;)

다 설치를 한 다음에 설치된 폴더(디폴트로 c:\lcds)에 flex.war, sample.war, flex-admin.war 파일이 3개가 있는데 이것을 톰캣폴더에 있는 webapp폴더에 복사해줍시다.

톰캣은 WAR파일을 폴더에만 복사해두면 작동하면 자동으로 Deploy합니다 ^^

자 그러면 톰캣을 가동해봅시다.
가동이 완료되면 주소창에 http://localhost:8080/flex/ 이라고 적어봅시다.
사용자 삽입 이미지


위 그림처럼 뜨면 설치가 성공한겁니다 ^^
샘플도 실행해봅시다. http://localhost:8080/samples/dashboard/dashboard.mxml 를 실행해봅시다.
사용자 삽입 이미지

위와 같이 멋진 샘플화면이 뜰 껍니다 ^^

설치를 했다는 데에 의의를 둡시다-_-; 다음시간에는 헬로우월드(HelloWorld!)를 찍어봅시다-_-;

ps. 근데 저 샘플화면을 실행했을 때 플레쉬플레이어를 설치하라고 나와서 다시 설치를 했는데도 또 설치하라고 나오면 언인스톨하고 다시 설치하면 됩니다 ^^
 
Posted by 머드초보

댓글을 달아 주세요

  1. 황민혁 2008.10.03 14:52  댓글주소  수정/삭제  댓글쓰기

    LiveCycle DataService 다운 주소가 바뀐거 같아요~
    http://www.adobe.com/cfusion/entitlement/index.cfm?e=lcds26_td

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

      앗! 감사합니다 ^^
      예전 2에서는 플렉스하고 같이 받을 수 있었거든요^^
      지적 감사해요 ^^

  2. 박대호 2009.12.03 20:29  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 ?

    부산 박대호라고 합니다.

    님의 정보에 감사 드립니다.


    코딩하다가 잘 되지 않는 것이 있어서 질문 드립니다.

    제목 : modules with DataService

    내용:

    저는 LCDS 의 data-management를 이용하여 코딩을 히고 있습니다.
    저의 프로젝트 구조는 1개의 Main Application과 Module들로 구성되어 있습니다.
    그리고 각 Module들은 DataService를 가지고 있습니다.

    그런데, 문제는
    최초로 선택된 모듈의 DataService는 정확히 동작을 하는데,
    2번재 부터 선택된 모듈의 DataService에서는 에러가 납니다.

    아침 7시 30분 부터 작업을 혼자서 합니다.
    저녁 12시를 넘어 귀가하는 경우가 많습니다.

    많은 고비가 있었는데, 이것이 마지막 난코스 인것 같습니다.
    도움을 주실 수 있으면, 후사 하겠습니다.

    그럼 이만... ceo@wibornix.com.. 010-65667428

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

      아네 방문해주셔서 감사해요~
      모듈과 LCDS는 써보질 않아서 ㅠㅠ
      지돌스타님 블로그를 보니 거기에서 도움을 얻으셨던 것 같은데 다행입니다^^