본문 바로가기

카테고리 없음

Weblogic Server 11 EJB3 Final Project

Weblogic Server 11gR1을 기반으로 EJB3의 모든 형태의 Bean을 이용하여 간단한 장바구니 프로그램을 작성해 본다.

지금까지 학습한 내용을 전반적으로 활용하여 작은 프로젝트를 기획하고 실제 구현을 통해 이해를 확실히 하기 위해 준비한 프로젝트 (약 6시간 예정)

참고
Stateless Session Bean 설정법
Entity Bean 설정법
Weblogic JMS설정법
Message Driven Bean 설정법
Weblogic 에서 JavaMail 사용예
MDB, Session Bean을 이용한 Mail 보내기 예

요구조건

EJB3의 모든 형태의 Bean을 작성하여 사용해야 한다.
Stateful Session Bean
Stateless Session Bean
Entity Bean
Message Driven Bean
Mail API 모두 사용해야 한다.

Steteful Session Bean의 상태유지 특성을 이용하여 장바구니 기능을 구현한다.
장바구니의 내용을 결재할 때 구매상품들을 데이터베이스에 저장해야 하므로
Entity Bean 을 작성한다.
결재가 성공적으로 이루어지면(데이터베이스에 성공적으로 저장한 후) 고객에게
주문접수 확인 메일을 전송해야 하므로 Message Driven Bean과 JavaMail API를 사용한다.

시스템 요구사항
Weblogic 11, EJB3, JDK 6, Oracle 10g, Eclipse 3.5(OEPE),
Weblogic JMS, Message Destination Type:Queue
DB Query: EJB-QL
OS: Windows XP




구성파일 및 구현기능
아래에 제시된 JSP페이지 외에도 View가 필요하다면 임의로 추가하면 된다.

JSP

login.jsp - 로그인을 위한 폼을 제시하고 로그인 요청
goods.jsp - 아래의 JSP페이지로 링크를 설정한다. 로그인 성공시에만 보여진다.
memory.jsp - 컴퓨터 메모리를 구매할 수 있는 페이지(수량선택, 장바구니에 담기, goods.jsp 로 링크)
mp3.jsp - MP3를 구매할 수 있는 페이지(수량선택, 장바구니에 담기, goods.jsp 로 링크)
pmp.jsp - PMP를 구매할 수 있는 페이지(수량선택, 장바구니에 담기, goods.jsp 로 링크)
showCart.jsp - 장바구니의 내용을 보여주는 페이지(결재, 장바구니 비우기, goods.jsp로 링크)

상품을 구매하는 위의 각 페이지에서는 상품이름, 수량, 단가, 고객ID를 요청에 포함해야 한다.

JSP Bean class

Goods.java
   - JSP페이지에서 구매하기 위해 선택한 상품정보를 저장할 DTO 클래스
   - ControllerServlet에서 생성되고 장바구니를 구현한 CartSFSB으로 전달된다.
   - Eclipse3.5(OEPE)에서 EJB프로젝트를 생성하면 자동으로 생성되는 EJBClient프로젝트에 dto라는 패키지 안에 작성하면 된다.


Servlet class

ControllerServlet.java
   - 모든 JSP페이지에서 전달되는 요청을 1차적으로 접수하고 처리하는 서블릿
   - 장바구니와 관련한 기능들은 CartSFSB(EJB Bean)을 호출하여 사용한다.
   - 이용자에게 처리결과를 보여줄 필요가 있을 때는 원하는 JSP페이지로 forward 한다.


EJB3 Bean class

LoginSLSB.java
   - Stateless Session Bean
   - 로그인 폼의 데이터와 customer 테이블의 로그인 정보를 이용하여 등록된 고객인지 검증
   - Customer 엔티티빈을 이용하여 customer테이블에 접속한다.

CartSFSB.java
   - Stateful Session Bean
   - 장바구니의 모든 기능을 갖도록 구현한다.
   - 데이터베이스에 입출력할 필요가 있을 때는 Order Bean을 호출한다.
   - 상품을 저장할 ArrayList<Goods> 형 속성을 선언하고 set, get메소드가 필요
   - 고객의 ID(customerId)를 속성으로 선언한다.

Customer.java
   - Entity Bean
   - customer 테이블과 매핑되는 Entity Bean 클래스
   - 고객정보를 속성으로 갖는다.

Order.java
   - Entity Bean
   - porder 테이블과 매핑될 Entity Bean 클래스
   - 주문정보를 속성으로 갖는다

**** 위의 엔티티빈 2개는 OPEP에서 'Generate Entities from Tables....' 메뉴를 사용하여 작성한다

OrderMDB.java
   - Message Driven Bean
   - 주문성공 메시지가 전달되면 주문고객에게 주문확인 메일을 전송한다.
   - 메일을 전송하는 기능은 MailSLSB(Stateless Session Bean)을 호출한다.

MailSLSB.java
   - Stateless Session Bean
   - Weblogic Server에 포함되어 있는 JavaMail API를 이용하여 고객에게 메일을 전송한다.
   - 메일을 전송할 때 메일주소는 customer테이블과 매핑된 Customer객체를 이용한다.



데이터베이스 테이블
다음과 같은 테이블을 미리 생성하여 프로그램에서 사용한다

create table customer(
 customerId number(5) primary key,
 cPwd number(5),
 cName varchar2(20),
 cAddress varchar2(40),
 cEmail varchar2(30)
);
insert into customer values ( 101, 101, '홍길동', '서울시 종로구 효제동', 'cwisky@paran.com' );
insert into customer values ( 102, 102, '김인철', '경기도 의정부시 신주동', 'cwisky@naver.com' );

create table porder (
 orderNum number(10) primary key,
 itemName varchar2(30),
 count number(5),
 unitPrice number(10),
 orderDate date,
 customerId number(5) references customer(customerId)
)



구현 1단계
로그인 페이지에서 로그인하여 customer 테이블의 정보와 비교하여 검증에 통과하면 goods.jsp페이지가 웹브라우저에 출력된다
- loginForm.jsp
- ControllerServlet.java
- LoginSLSB.java
- Customer.java Entity Bean
- forward --> goods.jsp
- goods.jsp 출력