728x90
반응형
출처 throw new *^^*; | 예영파피
원문 http://blog.naver.com/agapeuni/60064550602 
CCL

reference

한글문서

영문문서

링크

관련툴

<div class="note"> 위키북스에서 출판되는 iBATIS In Action에서 독자의 이해를 돕고자 하는 사항에 대해 정보를 제공한다. </div>

샘플코드

  • queryForMap()의 사용예제 - iBATIS사용시 대개의 개발자는 queryForObject와 queryForList를 사용한다. 그래서 queryForMap에 대한 이해나 예제가 부족한 실정이다. 그래서 이해를 돕고자 예제를 제공한다.
  • Procedure 사용예제 - Procedure사용예제를 다룬다. IN, OUT, INOUT타입을 다룬다.
  • iBATIS Error Message - iBATIS를 사용하면서 겪게 되는 에러 메시지.

 

[출처] http://openframework.or.kr

728x90
반응형
728x90
반응형
앞글( http://tylee82.tistory.com/62 )에 이어서 클라이언트 작성을 알아보도록 한다.
이글은 머그초보의 블로그( http://mudchobo.tomeii.com/tt/239?category=8 ) 의 글을 참고로 작성됨을 알려드리며, 문제가 발생시 자삭 하겠습니다.

<< service-config.xml파일을 수정 >>

<factories>
  <factory id="springfactory" class="flex.messaging.factory.SpringFactory" /> 
</factories>
를 추가합니다.

<< remote-config.xml 파일을 수정 >>
<destination id="productmanager">
 <properties>
  <factory>springfactory</factory> 
  <source>productManager</source>
 </properties>
</destination> 

자세히 보시면 factory는 위에 service-config.xml파일에 정의한 놈이고, source는 bean이름입니다.
즉 applicationContext.xml파일에 정의한 그 bean이름을 저기에 적어 놓으면 됩니다.
그러면 그 bean을 flex로 가져와서 쓸 수 있습니다.


아 그리고 프로젝트에서 이상하게 contextroot가 WebContent로 되어있는데 프로젝트이름으로 고쳐줍시다-_-; 
---> (원래 WebContent 나오는게 정상 아닌가?? 뭐 난 아무것도 모르는 초보니깐.. 그냥 시키는데로...)

프로젝트 이름에 대고 마우스오른쪽버튼(alt+enter) properties를 선택, Flex Server부분 클릭.
context root를 프로젝트이름(SpringAndBlazeds)으로 바꿔줍시다.


<< FLEX 작성 >>
자 그러면 flex_src에 있는 SpringAndBlazeds.mxml을 수정해봅시다.
SpringAndBlazeds.mxml


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
 
applicationComplete="init();">
 
 
<mx:Script>
  <![CDATA[
   import mx.controls.Alert;
   import mx.rpc.events.FaultEvent;
   import mx.rpc.events.ResultEvent;
   import mx.rpc.remoting.RemoteObject;
   
   private function init():void {
    var remoteObject:RemoteObject = new RemoteObject();
    remoteObject.destination = "productmanager";
    remoteObject.addEventListener(ResultEvent.RESULT, resultHandler);
    remoteObject.addEventListener(FaultEvent.FAULT, faultHandler);
    remoteObject.getProducts();
   }
   
   private function resultHandler(event:ResultEvent):void{        
       dg.dataProvider = event.result;  
      }      
   
      private function faultHandler(event:FaultEvent):void{        
       Alert.show("실패 메세지 : " + event.fault.message);  
      }  
  ]]>
 
</mx:Script>
 
 
<mx:DataGrid id="dg" width="100%" height="100%" />
</mx:Application>

간단하게 Manager에 있는 getProducts를 호출해서 DataGrid에 넣는 코드입니다.

<< 실행 >>
이클립스 오른쪽아래에 server에다가 SpringAndBlazeds프로젝트를 추가합니다.
서버에 대고, 오른쪽버튼누르면, Add and Remove Project클릭해서 추가하면 됩니다.
서버를 가동합니다.
Run Flex Application을 실행해봅시다!


 - 후기
이번 예제를 실행하면서 나의 실력에 부족한점을 알아냈다.
  • Spring 프레임워크의 부족한 점 보안 
  • Flex에서 DataBase의 연동시 처리 방법 보안
  • iBatis의 데이터 베이스 정의 및 사용방법 보안
실질적으로 사용을 하기위한 프로젝트로 만들기 위해서는 많은 점을 보안해야 겠지만, 일단 오늘 돌려본 이 예제가 엄청난 도움이 될거라 생각한다. 아직 Spring 프로젝트 경험도 공부도 해본적이 없지만, EJB시스템 및 좀더 거대한 프로젝트를 위해서는 아무래도 공부를 해야겠다.

개인적으로 참 괜찮다고 생각한 DB 처리 java 소스들이 있어서 언제나 그것을 가지고 개발을 했는데, 아무래도 이제는 iBatis를 이용해 봐야겠다. 

FLEX의 컴포넌트 구조도 아는것이 없었는데, 일단 DB와 연동을 시켜봤으니 게시판부터 한번 개발 해보려 한다.

다시한번 머그초보님에게 감사를 표시합니다.

728x90
반응형
728x90
반응형

앞글 ( http://tylee82.tistory.com/61 )에 이은 포스트입니다.
이 글은 머드초보의 블로그 ( http://mudchobo.tomeii.com/tt/238?category=8 )의 글을 기초로 작성 됨을 알려드리며, 문제 발생시 자삭하겠습니다.

<< Manager클래스 작성 >>
실제로 BlazeDS를 이용해서 가져오는 놈은 이 Manager클래스가 됩니다.
Java Resources: src에서 오른쪽버튼 클릭하고, New를 해서 interface를 구현합니다.

package springapp.service;

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

public interface ProductManager {
 
public List<Product> getProducts();
}

getProducts라는 메소드가 하나 있군요! 구현해봅시다!!!

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;
 
}
}

getProducts라는 함수는 Dao에서 getProductList를 호출하는 놈이네요.
요 아래에는 setter가 있네요. 이건 spring에서 DI를 하기위해 존재하는 setter입니다^^
서비스도 완성이 되었네요! 이제 설정파일을 작성해봅시다.

WEB-INF/applicationContext.xml

<?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>

Dao부분의 설정파일인 applicationContext-ibatis.xml파일을 봅시다.
WEB-INF/applicationContext-ibatis.xml

<?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>

jdbc.properties파일은 properties라는 package를 만들고, jdbc.properties파일을 넣어버립시다.

jdbc
.driverClassName=com.mysql.jdbc.Driver
jdbc
.url=jdbc:mysql://DB주소
jdbc
.username=DB아이디
jdbc
.password=DB비밀번호

이 설정들의 bean들의 관계를 보고 싶다면-_-;
Spring Elements에서 오른쪽버튼 클릭하고 properties를 선택.
Bean Support를 선택, Add한 뒤 두개의 설정파일(applicationContext.xml, applicationContext-ibatis.xml)선택.
Config set에서 New하고 Name에 applicationContext라고 하고, 두개다 체크 오케이~
그럼 이제 스프링 설정파일에서 에러를 찾아낼 수 있어요!
bean들의 관계를 그래프로도 볼 수 있네요!
Config set에 추가한 applicationContext에다가 마우스오른쪽버튼을 클릭하면 open graph로 볼 수 있어요!

이제 클라이언트 구현으로....다음 시간에-_-;
728x90
반응형
728x90
반응형

세팅 ( http://tylee82.tistory.com/60 )이 완료되면 이제 코딩을 해보겠습니다.
머드초보의 블러그의 글을 참고로 작성된 글임을 다시한번 강조합니다.



<< MySQL >>
일단 DB 구조입니다. 
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=UTF8;

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

※ mysql 설치시 charset을 utf-8로 설정을 하였기때문에 UTF8로 charset을 잡았습니다.

<< 프로젝트 구조 >>

그냥 src폴더는 자바서버단 폴더구요. flex_src폴더는 플렉스클라이언트단 폴더입니다.



<< web.xml 의 수정 (스프링 설정) >>

web.xml 아래 코드 추가
<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>

applicationContext*라고 적어 놓은 이유가 ibatis랑 분리를 하려고 합니다.
설정파일은 applicationContext.xml과 applicationContext-ibatis.xml 두개를 사용할껍니다.

※ 위 코드 추가시 주의 사항 : web.xml의 엘리먼트의 위치는 순서가 있습니다. 순서가 맞지 않는다면 에러가 납니다. ( 참고글 : http://woongbox.tistory.com/tag/The%20content%20of%20element%20type%20"web-app"%20must%20match )

<< 소스코딩 >>
src에다가 코딩을 해봅시다.
java는 perspective를 Java EE로 바꾸고 합시다.


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

Product.java

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;
 
}
}

ProductDao를 만들어봅시다.
Java Resource:src에 New해서 interface를 추가합시다.
package에다가 springapp.dao라고 써놓고, 
Name에다가 ProductDao라고 씁시다.

package springapp.dao;

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

public interface ProductDao {
 
public List<Product> getProductList();
}

딸랑 ProductList만 가져오는 메소드가 있어요! 
저 Dao인터페이스를 구현해봅시다!!!

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");
 
}
}

<< ibatis >>
ibatis부분인데요. 설정파일을 보도록 하겠습니다.

src/springapp/dao/SqlMapConfig.xml

<?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>

alias지정해주고, resource는 src/springapp/dao/MySQLProduct.xml파일입니다.

MySQLProduct.xml

<?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>

getProductList라는 것은 products테이블에서 내용을 select하는 것이네요.
Dao가 완성되었네요! 너무 길어지니 다음이시간에 ...

728x90
반응형
728x90
반응형
스프링프레임워크에 플렉스를 연동하는 간단한 예제를 만들어 보겠다. 

이 포스트는 머드초보님의 블로그(http://mudchobo.tomeii.com)를 기반으로 작성하였으며, 난 스프링프레임워크에 대한 지식이 많지 않다.. 물로 플렉스도.. 배우는 과정이기 때문에 그냥 따라해본다.

머드초보님 글 감사합니다.

일단 세팅부터 하자.

<< 준비물 >>
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

Spring Framework 2.5.6 : http://www.springframework.org/download

Spring과 BlazeDS연동라이브러리 : blazeds-spring-beta1.jar 현재 beta1이군요.
http://www.igenko.org/archiva/repository/igenko/com/adobe/flex/blazeds-spring/

↑ 위 링크 없졌다..그래서 Sewon On Software 블로그 ( http://sewony.tistory.com/entry/BlazeDS-와-스프링Spring-연동하기 ) 에서 다운 받았다. 외국사이트에서 구하면 된다고 하는데, 구글에서 찾다보니 이곳이 나와 난 여기서 다운 받았음..이거 말고 다른 라이브러리가 존재하는것 같지만, 일단 이것을 사용하도록 한다. 난 아무것도 모르고 하는것 이기에...;;;

설치는 모두 알아서 설치 하도록 한다. 뭐 그냥 깔고 압축풀고 ....


Blazeds 프로젝트 생성
1. File -> New -> Project선택, Flex Project선택 후 Next
Project : SpringAndBlazeds
Application Type : Web Application
Application server type : J2EE

2. J2EE 세팅 설정
Target runtime : Tomcat
설정이 안되어 있다면 New 한다음에 Apache폴더에 Tomcat 6.0을 선택하고, 해당 톰캣의 경로를 지정하고, Finish를 클릭한다.
 flex WAR파일을 선택하라고 하는데 받아놓은 blazeds.war파일을 선택한다.
Finish를 클릭하면 끝난다.


- 스프링IDE 설치

1. 이클립스메뉴에서 Help -> Software Updates -> Find And Install 선택
Search for new features to install를 선택 후 Next
New Remote Site선택 Name은 Spring IDE, url은 http://dist.springframework.org/release/IDE고 쓴다.




추가한 것만 체크된 상태에서 Finish클릭!

몇개는 설치 못하는데 설치 못하는 것은 체크해제를 시킨다...ㅡ.ㅡ;;
Dependencies에서 Spring IDE Dependencies 체크해제
Integration에서 Spring IDE AJDT Intergration 체크해제
AspectJ Development Tools도 설치하려면 하면된다. 난 사용할줄 모름...
Next -> agree -> finish하면 설치가 됩니다.
설치가 다 되면 이클립스ide를 restart하라고 나와서 리스타트^^

근데 지금 회사에서는 외부인터넷 접속에 문제가 있어서 그런지 몰라도...저 주소가 안된다...


2. 만든 프로젝트에  마우스 오른쪽버튼을 클릭해서 Spring Tools -> Add Spring Project Nature선택 하면 완료!!



3. 필요한 라이브러리를 복사한다. ( 근데 어디다가 복사 하라는거지??음...일단 WEB-INF/lib 에 복사 한다... 어찌됬건 모두 라이브러리 파일이니깐...)

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.2.jar : Junit으로 테스트 할 때 필요한데, JUnit테스트를 할 때에는 Interface가 구현이 안되어있어서(aop를 사용하려면 interface가 구현이 되어있어야 한다고 하더군요) 필요한 놈. --> http://sourceforge.net/project/showfiles.php?group_id=56933

lib/aspectj/aspectjweaver.jar : aop때문에 필요한 놈 같은데-_-;  
lib/junit/junit-4.5.jar : JUnit을 사용하기 위해 필요한 놈.

mysql-connector-java-5.1.7-bin.jar : mysql Connector. db가 다른거면 다른 Connector가 있으면 돼요!
blazeds-spring-beta1.jar : 위에서 설명한 spring과 blazeDS와 연동할 때 필요한 놈.


여기까지하면 세팅완료!!
728x90
반응형
728x90
반응형

아래 글은 투윙오리(happyyhj)님의 블로그에서 퍼왔음을 알려드립니다.

원본 주소 : http://blog.naver.com/happyyhj/59943609

문제가 있을시 삭제처리 하겠습니다.

===================================================================================================

Flex2에서 할려고 했었는데 BlazeDs는 Flex3에서만 된다기에 그냥 Flex3에서 함.

이클립스에서 몽땅 다 사용하기 ㅋ

예제들을 보니 거의 플렉스 빌더(flex) + 이클립스(BlazeDs) 이렇게 사용하고 있었다.

고맙게도 어떤 분께서 이렇게 좋은 자료를 올려주셔서 보면서 따라했다.

안에 내용은 중복된다. 그냥 저거 그대로 했다고 보면 된다.

친절한 설명과 함께 그림으로도 과정샷을 설명해주신 내용을 파일로 다운받을 수 있도록

해놓으셨다. 완전 감사!

http://tong.nate.com/thesunrises/45999746

 

 

[준비작업]

1. BlazeDS를 다운 받는다.

(Binary Distribution-> 꼭 필요한 파일만 있음.

샘플이랑 바로 구동해 볼 수 있는 톰캣 포함을 원하면 Turnkey)

http://opensource.adobe.com/wiki/display/blazeds/Release+Builds

 

2. 다운 받은 압축 파일을 풀면 blazed.war 파일이 있다. 확인해 보자.

 

 < 시작 > 

1. 이클립스 띄워서 플렉스3 프로젝트 생성(New-> FlexProject)

    아래 그림과 같이 셋팅한다.

  

[Next]!

 

2. 1에서 서버타입으로 선택한 J2EE Server 셋팅작업

    콤보박스 내렸을 때 기존에 내가 등록한게 있으면 그거 선택하고

    없으면 [New...]버튼 클릭

 

 

3. 나는 톰캣 5.5 사용 ^^ -> [Installed Runtimes] 버튼 클릭

 

 

4. [Add...] 버튼 클릭 후

    톰캣 5.5 클릭 후 [Next] 버튼 클릭

 

 

5. [Browse...] 버튼 클릭해서 내가 설치해 놓은 톰캣 폴더 경로 잡아준다.

 

6. 다시 2번의 창으로 돌아와서 [Browse...]버튼 클릭 해서 아까 준비작업 1에서 다운 받았던 blazed.was파일이 있는 경로를 잡아준다.

 

7. 그림을 참고로 자기에게 맞게 수정.

 

8. src 폴더에서 오른쪽 마우스 클릭(new-> Other -> java -> package)해서 test란 이름의 패키지 만들고 만든 test란 패키지에서 오른쪽 마우스 클릭(new-> Other -> )해서 java file 생성

자바파일 생성시 파일이름만 써주고 나머지는 설정 그대로 하고 마치면 됨.

----------------------------------------

  

-----------------------------------------------

 

9. 자바 내용 작성

------------------------------------------

package test;

public class helloTest {
    public String getStr(){
        return "Welcome BlazeDS: success!";
    }
}
------------------------------------------------

 

10. WebContent/WEB-INF/flex/remote-config.xml 파일 수정

    빨간색 글자가 추가된 부분임.

    만약 위의 파일이 없다면 준비작업2에서 압축 푼 경로에서 import해온다.

    (이유는 모르겠지만 나는 없어서...)

   이클립스에서 xml여니까 트리구조로 나왔다. 오 신기 ㅡㅡ;

   각 상위 태그에서 오른쪽 마우스 클릭해서 add child나 add attribute 메뉴로 아래와 같이

   추가했다. 그게 어려우면 그냥 윈도우 탐색기로 경로 찾아가서 메모장이나 editplus

   이용해서 수정해도 된다 ㅎㅎ

-----------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service"
    class="flex.messaging.services.RemotingService">

    <adapters>
        <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
    </adapters>

    <default-channels>
        <channel ref="my-amf"/>
    </default-channels>

    <destination id="blaze">
     <properties>
      <source>test.helloTest</source>
 </properties>
    </destination>

</service>

-----------------------------------------------------------------------------

 

11. RemoteObject_Test.mxml 파일에 작성

-----------------------------------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 <mx:RemoteObject id="ro" destination="blaze" fault="faultHandler(event)">
  <mx:method name="getStr" result="resultHandler(event)"/>
 </mx:RemoteObject>
 <mx:Script>
  <![CDATA[
   import mx.rpc.remoting.mxml.RemoteObject;
   import mx.controls.Alert;
   import mx.rpc.events.ResultEvent;
   import mx.rpc.events.FaultEvent;

   
   //에러가 났을 경우 이벤트 발생
   private function faultHandler(event:FaultEvent):void
   {
       Alert.show("error: "+event.message.toString());
   }
   
   //제대로 실행 되었을 경우 이벤트 발생
   private function resultHandler(event:ResultEvent):void
   {
       Alert.show("result: "+event.result.toString());
   }
   
   //버튼 클릭 후 RemoteObject Call
   private function remote_object_call():void
   {
       // remoteObjecc에서 java method call
       ro.getStr();
   }
  ]]>
 </mx:Script>
 <mx:Button label="service start" click="remote_object_call()" x="159" y="127"/>
</mx:Application>

-----------------------------------------------------------------------------

 

12. RemoteObject_Test 프로젝트 선택 후 오른쪽 마우스 클릭 해서 properies클릭

      context root변경 -> 프로젝트명으로

 

13. 이클립스 도구 모음 window -> show view -> other -> server -> server

      server 창안에서 마우스 오른쪽 클릭 New-> server 클릭

     3번 그림과 같이 뜬다. 3번에서는 Installed Runtimes...버튼 클릭하는데 여기서는 그냥

     사용할 서버 톰캣 5.5(아까 J2EE에서 만든 server) 선택 후 finish 버튼 클릭

 

14. server창에 나타난 톰캣서버 선택 후 마우스 오른쪽 클릭 해서

     Add and Remove Project... 선택 

     왼쪽 창에서 실행시킬 프로젝트 선택 후 add > 버튼 클릭 한 후 finish 버튼 클릭

  

 

15. 실행시킨다. 상단의 초록색 동그라미 모양의 재생버튼을 클릭해도 되고  

    최종 실행시킬 mxml파일 선택 후 마우스 오른쪽 버튼 클릭해서

    Rus As-> 2.Flex Application 클릭해도 된다. 

 

[결과 화면]

728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형

synchronized 는 method에 썼을 때에는 method 단위로, block으로 지정했을 때에는 block 단위로 배타제어가 됩니다.

 

public synchronized void func1() {

}

 

public void func2() {

  ...

  synchronized (obj) {

    ...

  }

}

 

위와 같이 두 함수가 같은 클래스에 있을 때 한 프로세스가 func1을 실행하고 있을 때 다른 프로세스는 func1을 실행할 수 없습니다. 하지만 func2는 실행이 가능하죠.

func2에서는 두 개 이상의 프로세스가 동시에 함수를 실행할 수는 있지만 synchronized 블럭은 한번에 하나씩만 실행됩니다.


===================================================================================


그럼...동시에 실행시 블록안에 있는건 기다렸다가 FIFO 방식으로 호출하는건가?? 이건 좀 알아 봐야 할듯...

728x90
반응형
728x90
반응형

 

1. 드라이버설치
해당 DB 드라이버를 JAVA_HOME/jre/lib/ext 또는 TOMCAT_HOME/common/lib 아래에 복사
 
 
2. URL 형식
url 형식의 문자열을 인자로 사용.
 
jdbc:subprotocol:subname
subprotocol -> 사용할 드라이버 이름 or 특정 데이터베이스와의 연결을 지정하는 방식
subname -> 찾고자 하는 특정 데이터베이스명
 
 
3. Database별 Driver 와 connection URL
DATABASE
VALUE
ORACLE
DRIVER
oracle.jdbc.driver.OracleDriver
URL
jdbc:oracle:thin:@hostname:port:SID
MSSQL
DRIVER
com.microsoft.jdbc.sqlserver.SQLServerDriver
URL
jdbc:Microsoft:sqlserver://localhost:1433;databasename=DB
MYSQL
DRIVER
com.mysql.jdbc.Driver
URL
jdbc:mysql://localhost:3306/DB

4. 드라이버테스트 (도스창)  
도스상에서 javap 드라이버명
ex)javap com.mysql.jdbc.Driver
 
 
5. DB 접속테스트 (JSP 테스트) 
<%@ page contentType="text/html;charset=euc-kr" import="java.sql.*" %>
<%
try {
  Class.forName("해당JDBC_DRIVER");
  String url = "해당CONNECTION URL";
  String id = "DB사용자아이디";
  String pass = "DB비밀번호";
 
  Connection conn = DriverManager.getConnection(url, id, pass); 
 
  out.println("데이터베이스연결성공")
  conn.close(); 
catch(SQLException e) { 
  out.println("데이버베이스연결실패" + e.printStackTrace());

%>

6. DB 접속테스트 (java 테스트)
 
import java.sql.*;

public class DriverTest{
       
       // mysql
       private static String JDBC_DRIVER = "com.mysql.jdbc.Driver";
       private static String JDBC_URL = 
           "jdbc:mysql://localhost:3306/dbname?uniCode=true&characterEncoding=euckr";
       private static String DBUSER = "root";
       private static String DBUSER_PASS = "passwd";

       
/* mssql
       private static String JDBC_DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
       private static String JDBC_URL = 
                                   "jdbc:microsoft:sqlserver://localhost:1433;databasename=gmpd";
       private static String DBUSER = "sa";
       private static String DBUSER_PASS = "passwd";
       */

 
       public static void main(String args[]){
             Connection con = null;
             try {
                 Class.forName(JDBC_DRIVER).newInstance();
                 con=DriverManager.getConnection(JDBC_URL, DBUSER, DBUSER_PASS);
                 System.out.println("Success");
             } catch(SQLException ex){ 
                 System.out.println("SQLException" + ex);
                 ex.printStackTrace();
             } catch(Exception ex){ 
                 System.out.println("Exception:" + ex);
                 ex.printStackTrace();                   
             }
       }
}
728x90
반응형
728x90
반응형

계정생성 --> 데이타베이스 생성 ----> 테이블 생성 으로 하시면 될꺼 같습니다.

 


 

 

데이터베이스 접속

$ mysql -u 사용자명 -p dbname


설치 직후에는 root 사용자에 비밀번호가 없으므로 다음과 같이 접속하여 MySQL을 관리할 수 있다.

$ mysql -u root mysql



비밀번호 변경
MySQL을 설치한 직후에는 root 계정에 암호가 지정되어 있지 않다.
다음 세가지 방법으로 비밀번호를 변경 할 수 있다.


  • mysqladmin이용
    $ mysqladmin -u root password 새비밀번호

  • update문 이용
    $ mysql -u root mysql

    mysql> UPDATE user SET password=password('새비밀번호') WHERE user='root';
    mysql> FLUSH PRIVILEGES;


  • Set Password 이용
    SET PASSWORD FOR root=password('새비밀번호');


일단 root 비밀번호가 설정된 상태에서는 mysql이나 mysqladmin 명령을 실행할 때 -p 옵션을 붙여주고 기존 비밀번호를 입력해야만 한다.

사용자 추가/삭제

mysql> GRANT ALL PRIVILEGES ON dbname.* TO username@localhost IDENTIFIED BY 'password';


username 이라는 사용자를 password라는 비밀번호를 갖도록 하여 추가한다. username은 dbname이라는
데이타베이스에 대해 모든 권한을 가지고 있다.
username 사용자는 로칼 호스트에서만 접속할 수 있다. 다른 호스트에서 접속하려면

GRANT ALL PRIVILEGES ON dbname.* TO username@'%' IDENTIFIED BY 'password';


위를 또한 번 실행한다. '%'에서 홑따옴표를 주의한다.
추가 : '%'를 호스트네임으로 지정해도 모든 호스트에서 접속할 수 없었다. 각 호스트별로 다 지정해야 했다.

불필요한 사용자 삭제는

mysql> DLETE FROM user WHERE user='username';
mysql> FLUSH PRIVILEGES;



데이터베이스 생성/보기


  • 데이터베이스를 생성하고,
    mysql> CREATE DATABASE dbname;

  • 현재 존재하는 데이터베이스 목록을 보여준다.
    mysql> SHOW DATABASES;

  • 특정 데이타베이스를 사용하겠다고 선언한다.
    mysql> USE dbname;

  • 쓸모 없으면 과감히 삭제한다.
    mysql> DROP DATABASE [IF EXISTS] dbname;

    IF EXISTS 옵션은 비록 데이타베이스가 없더라도 오류를 발생시키지 말라는 의미이다.



테이블 생성/보기


  • 테이블을 생성하고,
    mysql> CREATE TABLE tablename (
    column_name1 INT,
    column_name2 VARCHAR(15),
    column_name3 INT );

  • 현재 데이타베이스의 테이블 목록을 보고
    mysql> SHOW TABLES;

  • 테이블 구조를 살펴본다.
    mysql> EXPLAIN tablesname;
    혹은
    mysql> DESCRIBE tablename;

  • 이름을 잘못 지정했으면 이름을 변경할 수도 있다.
    mysql> RENAME TABLE tablename1 TO tablename2[, tablename3 TO tablename4];

  • 필요 없으면 삭제한다.
    mysql> DROP TABLE [IF EXISTS] tablename;



현재 상태 보기


mysql> status

--------------
mysql Ver 11.18 Distrib 3.23.58, for pc-linux (i686)

Connection id: 26
Current database: study
Current user: study@localhost
Current pager: stdout
Using outfile: '
Server version: 3.23.58
Protocol version: 10
Connection: Localhost via UNIX socket
Client characterset: latin1
Server characterset: euc_kr
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 2 hours 9 min 59 sec

Threads: 1 Questions: 160 Slow queries: 0 Opens: 28 Flush tables: 1
Open tables: 1 Queries per second avg: 0.021
--------------



INSERT

mysql> INSERT INTO tablename VALUES(값1, 값2, ...);

혹은

mysql> INSERT INTO tablename (col1, col2, ...) VALUES(값1, 값2, ...);



SELECT

mysql> SELECT col1, col2, ... FROM tablename;


컬럼명을 *로 하면 모든 컬럼 의미.

mysql> SELECT col1 AS '성명', col2 AS '국어점수' FROM grade;


컬럼의 이름을 바꿔서 출력.

mysql> SELECT * FROM tablename ORDER BY col1 DESC;
mysql> SELECT col1, korean + math english AS '총점' FROM tablename ORDER BY '총점' ASC;


DESC는 내림차순 ASC는 오름차순.

mysql> SELECT * FROM grade WHERE korean < 90;


조건줘서 SELECT.

mysql> SELECT * FROM grade LIMIT 10;


결과중 처음부터 10개만 가져오기

mysql> SELECT * FROM grade LIMIT 100, 10;


결과중 100번째부터 10개만 가져오기. 첫번째 레코드는 0번 부터 시작한다.

UPDATE

mysql> UPDATE tablename SET col1=새값 WEHER 조건



DELETE

mysql> DELETE FROM tablename WEHRE 조건



mysql에서 쿼리 결과 세로로 보기
-E 옵션을 줘서 실행한다.

$ mysql -E -u root -p mysql



=============================================

1. Mysql 기본 사용법

 

->Mysql 데이터베이스 접속하기

# mysql -u root mysql

 

-> mysql 관리자 root 패스워드 설정하기

# mysql -u root mysql

mysql> update user set password = password('shcm0816') where user = ' root';

 

-> 빠져나간후 데이터베이스를 재시작

# mysqladmin -u root reload

 

->패스워드 입력

# mysql -u root -p mysql

 

< 여러가지 관련 명령어 >

 

->데이터베이스 확인

mysql> show databases;

 

->테이블 확인

msyql> show databases; 

msyql> desc user =>동일한 결과

 

2. 데이터베이스 생성 및 삭제

 

->데이터베이스 생성

① 첫번째 방법

# mysql -u root -p mysqlll

    msyql> create database TESTDB;

    msyql> show databases;

 

② 두번째 방법

# ./mysqladmin -u root -p create testdb2

Enter password:

# ./mysql -u root -p mysql

Enter passwor

 

cd /

msyql> show databases;

msyql> exit

Bye

#

 

->데이타 베이스 삭제

# ./mysqladmin -u root -p drop testdb2

Enter password:

 

mysql> drop database testdb2

 

# ./mysql -u root -p mysql

msyql> show databases;

 

3. 새로 생성한 데이터베이스 등록하기

-> 데이터베이스를 새로 생성한 후에는 mysql 이라는 관리용 데이터베이스에 등록

->mysql 이라는 데이터베이스의 db라는 테이블에 TESTDB를 등록한 것

msyql> insert into db  values('%','TESTDB','root','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

msyql> select host, db, user from db

 

4.  Mysql 사용자등록(데이터베이스 소유자)

->mysql 을 사용할 사용자는 반드시 user 라는 테이블에 등록을 해줘야함

msyql> insert into user (host, user, password) values('localhost', 'sspark', password('shcm0816'));

 

->정상적인 등록여부 확인

msyql> select host, user, password from user; 

 

->sspark이라는 사용자로 mysql 데이터베이스로 접속

msyql> mysql -u sspark -p

Enter password:

 

->새로운 데이터베이스를 생성하거나 새로운 사용자를 생성한 후에는 반드시 reload를 해줘야함

# mysqladmin -u root -p reload

Enter password:

 

5. 테이블 생성 및 삭제

msyql> create table testtable (

         ->uid mediumint(4) unsigned DEFAULT '0' NOT NULL auto_increment,

         -> name varchar(12) DEFAULT "" NOT NULL,

         -> email varchar (20) DEFAULT "" NOT NULL,

         -> PRIMARY KEY (uid)

         -> );

Query OK, 0 rows affected (0.00 sec)

msyql>show tables;

 

-> 필드 구조가 정의한 필드구조로 생성되었는지 확인

msyql> desc testtable;

 

-> 삭제

msyql> drop table testtable;

mysql> show tables;

 

6. 테이블속성 및 구조변경법

ALTER TABLE 테이블명 CHANGE[COLUMN] 필드명 필드타입

-> 기존 테이블에 필드 추가하기

 

mysql> er table testtable add column homepage varchar(30);

mysql> desc testtable;

 

-> 기존에 필드 속성 변경하기

ALTER TABLE 테이블명 CHANGE[COLUMN] 기존필드명 새필드명 필드타입

mysql> er table testtable change column homepage home varchar(50);

 

-> 기존에 필드 삭제

ALTER TABLE 테이블명 DROP [COLUMN] 필드명

mysql> er table testtable drop column home;

mysql> desc testtable;

 

-> 기존의 테이블삭제하기

mysql> create table sampletable

mysql> show tables;

mysql> drop table sampletable;

mysql> show tables;

 

7. 데이터 입력하기

mysql> insert into testtable (uid, name, email) values (', 'parksungsoo', sspark09@soback.kornet.net'" target=_blank>'sspark09@soback.kornet.net');

-> 주의: uid라는 필드는 auto_increment 라는 속성으로 생성했기 때문에 이 속성을 가진 필드들은 실제로 데이터값을 주지 않아도 자동적으로 1씩 증가.

 

->삽입할 필드는 생략가능

mysql> insert into testtable values(','sontaesoo','shutterbug@orgio.net');

 

->특정 필드에만 데이터를 입력할 경우에는 입력할 필드이름만을 나열 그에 해당하는 데이터 입력

mysql> insert into testtable (uid,name) values(','junwooki');

->정상적으로 입력되었는지 확인

mysql> select * from testtable;

 

8. 데이터 검색

SELECT(데이터검색하기)

->데이터검색의 일반적인 방법

 

-> 테이블의 모든 테이터를 검색

mysql> select * from testtable;

 

-> uid와 name 필드만을 조회

mysql> select uid, name from testtable;

->where문을 사용하여 특정 조건에 맞는 데이터만을 검색

mysql> select * from testtable where name = "sontaesoo";

 

->출력 결과 레코드의 중복제거하기(DISTINCT)

SELECT DISTINCT sex FROM testtable

 

->다양한 검색 방법

 

->'soo'라는 문자가 포함된 데이터를 모두 검색

->SELECT name FROM testtable WHERE name LIKE '%soo%'

mysql> select name from testtable where name LIKE '%soo%';

 

->특정한  한 문자로 시작하는 데이터만을 출력할 때에 사용하는 조회형식

SELECT name FROM testable WHERE name LIKE 'park%'

mysql> select name from testtable where name LIKE 'park%';

 

->특정 필드에 데이터가 NULL 인 경우를 조회한것

SELECT uid, name FROM testtable WHERE age IS NULL

mysql>select uid, name from testtable where age IS NULL;

 

-> 특정 필드의 데이터가 NULL이 아닌 경우

SELECT uid, name FROM testtable WHERE age IS NULL

 mysql>select uid, name from testtable where age IS NOT NULL;

 

-> SELECT name, uid, email FROM testtable WHERE savem > 5000 AND sex='M'

-> SELECT name, uid, savem FROM testtable WHERE savem >= 5000 ORDER BY savem  

     DESC

-> SELECT count(*) FROM testtable WHERE sex='M'

-> SELECT avg(savem) FROM testtable WHERE sex='M'

 

9. 데이터 수정하기

->UPDATE 테이블명 SET 필드명=필드값 또는 산술식 {, 필드명 = 필드값 또는 산술식}*[WHERE

   검색조건]

mysql> select * from testtable;

 

->uid 4 번의 데이터에 name 값과 email을 입력해 봄

mysql> update testtable set name = 'junyangmi' where age = 23;

mysql> update testtable set email = jym@superuser.co.kr'" target=_blank>'jym@superuser.co.kr' where age = 23;

mysql> select * from testtable;

 

-> uid 1 인 사람 (parksungsoo)의 나이를 25살로 수정

mysql> update testtable set age= 25 where uid =1;

 

->uid 2인 사람의 나이를 30살로 수정

mysql> update testtable set age = 30 where uid =2;

mysql> update testtable set age = 41 where uid=3;

 

-> 한해가 지났으므로 모든 사람의 나이를 한 살씩 증가

mysql> update testtable set age = age + 1;

mysql> select * from testtable;

 

10. 데이터 삭제하기(delete)

->Delete FROM 테이블명 [WHERE 검색조건]

mysql> select * from testtable;

mysql> delete from testtable where uid = 3;

 

11. 새로운 사용자 등록

-> Mysql 에 root로 접속

./mysql -u root -p

->Mysql DB 선택

mysql> use mysql;

mysql> show tables;

 

->새로운 DB 생성

mysql> create database xlare;

 

-> user 테이블에 입력 (user 라는 테이블에 새로운 사용자의 계정이름과 권한설정을 할 차례)

-> 호스팅사용자에 대한 설정 user테이블에 현재 사용장0ㅔ 대한 권한들을 모두 'N'로 설정

mysql> insert into user valuses('localhost', 'xlare', password('123'),'Y','Y','Y','Y','Y','N','N','N','N','N','N','N','N','N');

 

->user  테이블에 입력확인

mysql> select * from user where user = 'xlare' ;

 

-> db 테이블에 입력

mysql> insert into db values('localhost', 'xlare', 'xlare', 'Y','Y','Y','Y','Y','N','N','N','N','N',);

 

-> db 테이블에 입력 확인

mysql> select * from db where db = 'xlare';

 

-> 새로운 설정을 바로 적용키위해 mysqladmin 이라는 관리자명령어로 mysql 을 재시작

->reload를 해주지 않으면 생성했던 것들이 적용이 되지 않음

# ./mysqladmin -u root -p reload;

 

12. 일반사용자 권한설정(보안사항)

#./mysql -u root -p mysql

Enter password:

mysql> show tables;

--------------------

tables in mysql

--------------------

columns_priv

db

func

host

tables_priv

user

----------------------

 

->columns_priv 테이블

* 모든 특정 DB 의 특정 User 에 대한 특정 테이블의 각 컬럼에 대한 select, insert, update,

   reference 권한을 설정

mysql> desc columns_priv;

->db 테이블

* db라는 테이블에는 특정 DB에 대한 user들의 여러가지 권한들을 설정하는 테이블

mysql> desc db;

-> kebia 라는 데이터베이스의 소유자와 그 권한에 대해서 알아보고자 함.

-> kebia라는 데이터베이스의 소유자는 hyung 이라는 mysqkl 사용자이며 이 hyung 이라는 사용자

     는 이 kebia 라는 데이터베이스에 대한 각종 권한을 볼수 있음.

mysql> select * from db where db = 'kebia';

| localhost | kebia | hyung | Y  |   - - - - - ...........

------------------------

 

->tables_priv테이블

* columns_priv 테이블처럼 각 데이터베이스와 사용자 및 그 테이블에 대한 권한 설정

mysql > desc tables_priv;

---------------------

 

->user 테이블 : 새로운 사용자를 생성할때 이 테이블에 등록

-> 특정 사용자에 대한 Mysql에 존재하는 모든 데이터베이스에 대한 권한설정

-> 특정 사용자의 어떤권한에 대한 사항은 특정 데이터베이스가 아니라 Mysql에 존재하는 모든 데

     이터베이스에 권한이 주어짐.

-> host와 user, password 항목을 제외한 나머지 권한들은 모두 'N"로 설정

->특정한 사용자에 대한 특정한 데이터베이스에 대한 권한을 주려면 위에서 보았던 db라는 테이블

    에서 그 권한설정을 하는것이 안전함

 

13 .Mysql root 암호 변경하기

-> 방법 1:  mysqladmin 이라는 명령어 사용

# ./mysqladmin -u root -p password 12345

 

->방법 2: mysql의 set 이란 명령어로 root 암호 변경

# ./mysql -u root -p mysql

mysql> set password for root=passwd('12345678');

 

-> 방법 3: mysql 데이터베이스로 접속하여 update문을 사용하는 방법

# ./mysql -u root -p mysql

mysql> update user set password=password('12345' where user = 'root';

mysql> flush privileges;

 

->flush-privileges: 권한 테이블을 재시작한다. 권한 설정을 변경했을경우 반드시 재시작

mysql> flush privileges;

 

14. root 패스워드를 잊어버렸을 때는 어떻게?

->단계 1: 실행중인 mysql 종료

# ps -ef | grep mysqld

# killall mysqld

 

->단계 2: grant-table 미사용모드로 mysql시작 및 root로 접속

# .safe_mysqld --skip-grant-tables&

 

-> 단계 3: update문으로 root사용자 패스워드 변경

mysql> update user set password=password('12345') where user = 'root';

mysql> flush privileges;

 

-> 단계 4: 실행중인 mysql 다시 종료

# ps -ef | grep mysqld

# killall mysqld

 

-> 단계 5: 일반모드로 Mysql 재시작

# ./safe_mysqld&

# ps -ef | grep mysql

 

15. 특정 테이블의 구조보기(show columns from 테이블)

-> 특정테이블의 필드명 type, 설정값들을 보기 위한 것

-> 특정한 테이블의 칼럼(필드)구조를 보려면 "show columns from 테이블명"

-> 좀더 편리하여 많이 사용되는 명령문 " desc 테이블명"으로 확인

mysql> show columns form user;

 

->특정 테이블의 인덱스 보기

mysql> show index from user;

 

-> 데이타베이스의 설정상태 보기(show status)

mysql> show status;

# ./mysqladmin -u root -p status

 

-> 데이터베이스의 설정환경변수와 값보기(show variables)

mysql> show variables;

# ./mysqladmin -u root -p variables

 

-> 현재 데이터베이스에 연결된 프로세스들 보기(show processlist)

# ./mysqladmin -u root -p processlist

끝으로 원격에서 접근할려면 아래 내용을 참조하면 됩니다.

 

mysql 원격접속 권한 설정

 

>use mysql

>grant all privileges on *.* to 'oops'@'192.168.5.14'      

>identified by 'passwd' with grant option;

 

ip대신 % 를 주면 모든 호스트허용!

 

oops 라는 유저가 모든 권한을 부여받을 수있다 . 단 해당 아이피의 호스트 에서만.

 

이와 같은 설정은 select host,user from user; 로 확인해볼수 있다.

728x90
반응형

+ Recent posts