BroadLeaf eCommerce 솔루션은 서버는 자바 Spring Framework와 Hibernate를 사용하고 상품에 대한 검색은 Solr를 사용한다. 그리고 클라이언트는 ThymeLeaf 템플릿 엔진을 사용해서 BroadLeaf과 강하게 결합해서 사용된다. BroadLeaf 데모 사이트를 실제 사용할 수 있는 eCommerce 사이트로 전환하는 과정을 살펴본다. 또한 Frontend 쪽에 Twitter Bootstrap과 AngularJS를 적용해 Tymeleaf과 상호 운용될 수 있도록 설정해 본다.
Broadleaf DemoSite 설치
- BroadleafCommerce 는 코어 소스이고 Community 버전으로 오픈소스를 제공한다.
- BroadleafCommerce 코어 소스를 사용한 DemoSite를 제공한다.
- DemoSite를 깃헙에서 받아 사용해도 되고 eclipse workspace 파일을 별도로 이곳에서 받아도 된다. (다운로드 버전은 3.1.8 버전)
+ 만일 3.1.9 버전을 사용하고 싶다면 깃헙의 DemoSite 릴리즈에서 3.1.9-GA를 다운로드하면 된다.
- DemoSite를 maven project로 eclipse에 import하는 과정은 BroadLeaf Starting 가이드를 참조한다.
+ eclipse는 luna를 사용하면 eclipse용 maven 플러그인이 기본 설치되어 있다.
+ 단, Apache Maven 은 다운로드해서 설치하고 path를 잡아준다.
+ 최초 DemoSite/build.xml 을 Ant view에서 열고 "change-identifier"를 수행하고
maven의 grouId를 com.xxxx 식으로 넣고 "y"를 선택하면 자바 패키지와 maven groupId등을 설정한 값으로 자동 변경한다.
- 최초에 메이븐 빌드를 한번 해준다. 먼저 DemoSite로 이동해서 하기 명령을 한번 수행한다
$ cd DemoSite
$ mvn clean install
- Broadleaf은 Site와 Admin으로 구분되어 Site는 쇼핑사이트를 Admin은 카랄로그와 컨텐츠를 관리하고 각각 8080, 8081를 사용한다.
+ site/build.xml 과 admin/build.xml 을 ant view에서 열고 "jetty-demo"를 수행하면 된다.
+ 데이터베이스는 기본으로 메모리DB인 HSQLDB를 사용한다.
Site
http://localhost:8080
Admin (id: admin, password: admin)
http://localhost:8081/admin/
MySQL전환하기
- mysql로 전환하기 위해 데이터베이스와 계정을 broadleaf 로 지정하고 계정 암호는 abc1234 로 생성한다.
-- %> mysql --user=root -p mysql
-- Enter password: ******
-- mysql> grant all on broadleaf.* to broadleaf@localhost identified by 'abc1234' with grant option;
-- mysql> create database broadleaf;
-- mysql> flush privileges;
-- %> mysql -u broadleaf -p broadleaf
-- Enter password: ******
-- mysql> show grants for broadleaf@localhost;
-- mysql> select current_user;
- admin과 site가 mysql을 사용하도록 DemoSite/pom.xml과 admin/pom.xml과 site/pom.xml에 다음을 설정한다
// DemoSite/pom.xml 안에 설정
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
// admin, site/pom.xml 안에 설정
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
- jetty를 통해 기동될 때 데이터베이스 커넥션 유형을 3가지를 사용하는데 HSQLDB에서 MySQL로 환경값을 바꾸어 주어야 한다.
+ /site/src/main/webapp/WEB-INF/jetty-env.xml
+ /admin/src/main/webapp/WEB-INF/jetty-env.xml
<New id="webDS" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>jdbc/web</Arg>
<Arg>
<New class="org.apache.commons.dbcp.BasicDataSource">
<Set name="driverClassName">com.mysql.jdbc.Driver</Set>
<Set name="url">jdbc:mysql://localhost:3306/broadleaf?useUnicode=true&characterEncoding=utf8</Set>
<Set name="username">broadleaf</Set>
<Set name="password">abc1234</Set>
</New>
</Arg>
</New>
<New id="webSecureDS" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>jdbc/secure</Arg>
<Arg>
<New class="org.apache.commons.dbcp.BasicDataSource">
<Set name="driverClassName">com.mysql.jdbc.Driver</Set>
<Set name="url">jdbc:mysql://localhost:3306/broadleaf?useUnicode=true&characterEncoding=utf8</Set>
<Set name="username">broadleaf</Set>
<Set name="password">abc1234</Set>
</New>
</Arg>
</New>
<New id="webStorageDS" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>jdbc/storage</Arg>
<Arg>
<New class="org.apache.commons.dbcp.BasicDataSource">
<Set name="driverClassName">com.mysql.jdbc.Driver</Set>
<Set name="url">jdbc:mysql://localhost:3306/broadleaf?useUnicode=true&characterEncoding=utf8</Set>
<Set name="username">broadleaf</Set>
<Set name="password">abc1234</Set>
</New>
</Arg>
</New>
- 하이버네이트의 Dialect를 HSQLDB에서 MySQL로 바꾼다.
+ /core/src/main/resources/runtime-properties/common-shared.properties 의 맨 하단에 다음을 넣는다.
# overriding dialect
blPU.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
blSecurePU.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
blCMSStorage.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
- DemoSite의 build.properties의 기본 환경값을 HSQLDB에서 MySQL로 바꾼다.
+ /DemoSite/build.properties 의 맨 하단에 다음을 넣는다.
# new overriding
ant.hibernate.sql.ddl.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
ant.blPU.url=jdbc:mysql://localhost:3306/broadleaf
ant.blPU.userName=broadleaf
ant.blPU.password=abc1234
ant.blPU.driverClassName=com.mysql.jdbc.Driver
ant.blSecurePU.url=jdbc:mysql://localhost:3306/broadleaf
ant.blSecurePU.userName=broadleaf
ant.blSecurePU.password=abc1234
ant.blSecurePU.driverClassName=com.mysql.jdbc.Driver
ant.blCMSStorage.url=jdbc:mysql://localhost:3306/broadleaf
ant.blCMSStorage.userName=broadleaf
ant.blCMSStorage.password=abc1234
- 그리고 가장 중요한 설정은 site와 admin 의 common.properties에 맨 하단에 다음 사항을 필히 넣어 주어야 BLC_SKU 테이블이 생성됨
+ /site/src/main/resources/runtime-properties/common.properties
+ /admin/src/main/resources/runtime-properties/common.properties
# overriding dialect
blPU.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
blSecurePU.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
blCMSStorage.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
- 전환 후에는 ant task에서 "build-app"를 해주고 "jetty-run-no-db"를 선택하면 build한 target 디렉토리의 소스가 적용된다.
참조
'Study Frameworks > BroadLeaf eCommerce' 카테고리의 다른 글
[BroadLeaf] Product 화면 RWD 적용하기 - 4 (0) | 2014.12.15 |
---|---|
[BroadLeaf] Carousel 적용하기 - 3 (0) | 2014.12.14 |
[BroadLeaf] Twitter Bootstrap 적용하기 - 2 (0) | 2014.12.03 |