경매 웹 응용프로그램 세부사항

경매 웹 응용프로그램은 다음 다이어그램에서 보듯 여러 개의 컴포넌트로 구성됩니다. 이 학습은 전체 응용프로그램을 빌드하는 방법에 관해 설명하지 않습니다. 대신, 중요한 개발 및 디자인에 주안점을 두어 Workbench로 제공되는 다른 도구를 조율하므로 사용자의 웹 응용프로그램에 지식을 적용할 수 있습니다.

이 다이어그램은 데이터, 비즈니스 로직, 웹 컨텐츠 및 도구 간의 관계를
보여줍니다.
앞의 다이어그램을 보면 웹 컨텐츠는 데이터 및 비즈니스 로직과 동시에 개발되었습니다. 디자이너는 웹 페이지의 스타일과 레이아웃을 개발하고 Java™ 및 웹 서비스 개발자는 비즈니스 로직을 코드화하여 이 페이지를 작동합니다. 다음 섹션에서는 주요 컴포넌트가 작성된 방식 및 경매 웹 응용프로그램에 미치는 영향에 대해 설명합니다.
  1. EJB 맵핑 편집기로 엔티티 Bean과 데이터베이스 테이블 맵핑
  2. 세션 Bean Facade 마법사를 사용하여 SDO 데이터 오브젝트가 있는 세션 Facade 생성
  3. Web Site Designer로 웹 사이트 레이아웃 정의
  4. Page Designer로 웹 페이지 템플리트 작성
  5. Page Designer로 JavaServer Faces 컴포넌트를 JSP 페이지에 추가
  6. 웹 서비스 작성

EJB 맵핑 편집기로 엔티티 Bean과 데이터베이스 테이블 맵핑

EJB(Enterprise JavaBeans™)는 Java 응용프로그램이 관계형 데이터베이스의 데이터에 편리하게 액세스할 수 있는 방법을 제공합니다. BMP(Bean-Managed Persistence) 또는 CMP(Container-Managed Persistence)를 사용하면 엔티티 Bean을 개발할 수 있습니다. EJB 컨테이너는 Bean에서 지시한 대로 모든 데이터베이스별 호출을 작성하므로 BMP를 사용할 때보다 CMP 사용이 더 큰 유연성을 제공합니다. 기본적으로 Rational® workbench의 도구는 CMP를 사용하여 엔티티 Bean을 생성합니다. CMP 엔티티 Bean에는 액세스 SQL 코드가 없습니다. 따라서 다른 데이터베이스를 사용하는 기타 J2EE 서버에 코드를 다시 쓰지 않고 Bean을 배치할 수 있습니다.

하향식, 상향식 및 중간 합류식과 같은 여러 가지 접근법으로 관계형 데이터베이스와 오브젝트를 맵핑할 수 있습니다. 기존 오브젝트에서 사용하는 하향식 접근법은 필요한 만큼 레이어를 점점 세부적으로 정의한 후 마지막 단계에서 데이터베이스를 디자인합니다. 기존 데이터베이스 스키마에서 사용하는 상향식 접근법은 종속 레이어를 디자인함으로써 오브젝트를 정의합니다. 기존 데이터베이스와 기존 오브젝트를 사용하는 중간 합류식 접근법은 오브젝트와 해당 데이터베이스 테이블이 일치하도록 중간 레이어를 개발합니다.

경매 응용프로그램에서는 엔티티 EJB를 개발하는 데 상향식 접근법을 사용했습니다. Derby 데이터베이스는 처음부터 존재하며 필요한 EJB와 거의 일치하는 테이블이 포함되었습니다. 데이터베이스 연결 마법사로 데이터 베이스 연결을 작성한 후 EJB와 RDB 맵핑 마법사를 사용하여 몇 가지 예외는 있지만 하나 이상의 테이블과 맵핑되는 EJB를 작성합니다. 다음 그림은 경매 응용프로그램에서 사용된 엔티티 EJB 및 연결 관계를 보여줍니다.

이 다이어그램은 다양한 엔티티 Bean 사이의 관계를 나타냅니다.

경매 응용프로그램의 엔티티 Bean은 원격 클라이언트에서 직접 액세스되지 않습니다. 모든 요청과 응답은 세션 Facade를 통해 처리되고, Bean은 백엔드 데이터를 액세스하는 데 사용됩니다. 따라서 서버측에서 공유하여 영구 데이터 스토어에 액세스할 수 있습니다. 다음 섹션에서는 세션 facade에 대해 더 자세히 설명합니다.

엔티티 Bean 맵핑에 대한 자세한 정보는 상향식 맵핑 생성 도움말 항목을 참조하십시오.

세션 Bean Facade 마법사를 사용하여 SDO 데이터 오브젝트가 있는 세션 Facade 생성

세션 Facade는 클라이언트와 백엔드 간의 인터페이스로서 SDO(Service Data Object) 컴포넌트 및 데이터베이스와 통신합니다. 세션 Facade는 클라이언트가 실행할 오브젝트가 필요하다는 요청을 보낼 때 유용합니다. 오브젝트에 개별적으로 요청을 보내면 네트워크 트래픽과 대기 시간이 증가할 수 있습니다. 세션 Facade는 클라이언트로부터 일반적인 요청을 받아서 필요한 오브젝트로 특정 요청을 보내는 등의 두 가지 목표 사이에서 버퍼 역할을 합니다. 따라서 트래픽이 줄어들고 클라이언트 개발이 단순해집니다.

Facade가 생성되면 도구에 있는 메뉴에서 EJB 맵핑을 선택하여 Facade가 관리하는 EJB를 선택할 수 있습니다. Facade는 엔티티 Bean으로부터 필요한 SDO 컴포넌트를 생성합니다. 경매 응용프로그램에는 다음 기능 그룹을 기반으로 하는 두 개의 Facade가 있습니다.
  • 시스템 Facade: 백엔드, 시스템 특정 EJB와 인터페이스(예: 카테고리 및 역할)
  • 사용자 Facade: 사용자 특정 데이터 요약(예: 입찰, 항목 및 역할)

EJB를 그룹핑하여 두 개의 다른 Facade를 사용하면 필요한 EJB에만 액세스하므로 응용프로그램의 성능을 향상시킬 수 있습니다. 카테고리와 같이 웹 사이트 자체의 기능을 제어하는 엔티티 Bean은 시스템 Facade를 통해 제어됩니다.

Facade를 통해 참조된 EJB는 아래 다이어그램과 같이 세션 Bean Facade 작성 마법사를 사용하여 하나씩 선택됩니다. EJB는 필요에 따라 둘 이상의 Facade에서 참조할 수 있습니다. 그러나 경매 응용프로그램에서는 해당되지 않습니다.

이 다이어그램은 세션 Bean Facade 작성 사용자 인터페이스를 보여줍니다.

Facade에 메소드를 추가하면 기능을 추가할 수 있습니다. 예를 들여, 사용자 Facade에는 사용자 목록을 리턴하는 메소드가 있고, 활성 사용자 목록을 리턴하는 또 다른 메소드가 있습니다. 예와 같이 이 메소드를 사용하면 비활성으로 표시된 모든 사용자 목록을 리턴하는 사용자 Facade에 다른 메소드를 추가할 수 있습니다.

세션 Facade에 대한 자세한 정보는 http://java.sun.com./의 "패턴 디자인: 세션 Facade" 설명서에 있습니다.

Web Site Designer로 웹 사이트 레이아웃 정의

Web Site Designer 도구의 탐색 보기에는 사이트 레이아웃 방법에 대한 시각적 표시가 제공됩니다. 여기에는 개별 페이지와 계층구조 조직이 표시되어 있으며, 사이트 안에서 페이지의 레이아웃과 조직을 유지보수하는 데 유용합니다. 편집기에서 페이지를 끌어서 놓을 때 페이지 템플리트의 탐색 제어가 자동으로 갱신됩니다. 예를 들어 아래 다이어그램에 표시된 경매 탐색 구조에서 판매 페이지를 찾아보기 페이지 앞으로 이동하면 탐색 탭 순서를 변경할 수 있습니다. Web Site Designer는 모든 페이지에서 적절한 순서로 탭을 자동으로 생성합니다. 실행 중인 응용프로그램에 변경사항을 표시하려면 탐색 템플리트를 사용한 각각의 페이지를 다시 저장하십시오.

이 다이어그램은 Web Site Designer에 나타나는 경매 JSP를 보여줍니다.

위에서 설명한 탐색 보기 외에도 Web Site Designer에는 자세히 보기가 제공되므로 편리하고 편집 가능한 테이블에 페이지 요소를 추가로 구성할 수 있습니다(다음 그림 참조). 이 테이블을 사용하면 제목, 작성자 및 탐색 레이블과 같은 페이지 특성을 쉽게 갱신할 수 있습니다.

이 다이어그램은 Web Site Designer의 자세히 보기를 보여줍니다.

Web Site Designer를 통한 웹 사이트 레이아웃 관리에 대한 정보는 온라인 도움말의 웹 사이트 구조 작성 주제를 참조하십시오.

Page Designer로 웹 페이지 템플리트 작성

Workbench는 웹 페이지 뿐만 아니라 페이지 템플리트를 개발하는 비주얼 디자이너와 함께 제공됩니다.

페이지 템플리트는 재사용가능한 컨텐츠 코드로서 웹 사이트 섹션에 공통적인 모양 또는 동작을 제공합니다. 공통 룩앤필을 공유하려면 웹 페이지에서는 템플리트를 참조만 해야 합니다. 템플리트를 사용하는 것은 웹 사이트를 쉽게 탐색할 수 있는 사용자와 특정 페이지의 코드를 작성해야 하는 개발자 모두에게 효과적입니다.

또한 페이지 템플리트를 사용하면 웹 사이트 컨텐츠를 쉽게 유지보수할 수 있습니다. 템플리트 파일을 변경하면 템플리트를 참조하는 모든 페이지에 자동으로 적용됩니다. 예를 들어 경매 웹 응용프로그램에서 maintemplate.jtpl 템플리트는 경매 페이지의 일반 레이아웃을 제공합니다. Page Designer에서 요소를 웹 페이지로 끌어 놓을 수 있는 팔레트를 사용하여 템플리트에 웹 페이지 요소를 추가할 수 있습니다. 필수 HTML 코드는 자동으로 생성됩니다. 이러한 방법으로 경매 템플리트(예: 바닥글에 현재 날짜와 시간이 있는 템플리트)를 쉽게 수정할 수 있습니다.

경매 템플리트의 주요 요소는 탐색 제어입니다. 경매 웹 응용프로그램 탐색줄에서 사용하는 탐색 양식은 다음과 같습니다.
  • 탐색 탭: 웹 사이트의 다른 섹션을 표시합니다.
  • 탐색 추적 또는 "사이트 이동 경로": 웹 사이트 내에서 사용자의 위치를 명시적으로 표시합니다(예: 홈 > 찾아보기 > 목록).
이 다이어그램은 경매 샘플 페이지에 나오는 탐색 탭을 보여줍니다.

탐색을 하드 코딩하지 않고 템플리트를 호출하는 태그를 삽입하면 모든 사이트 페이지에 같은 탐색줄을 넣을 수 있습니다. 템플리트 맵핑 편집기는 웹 페이지에 템플리트 참조를 삽입합니다.

동적 템플리트는 이 기술에 단계를 하나 더 추가합니다(예: 사용자의 역할과 기능에 따라 웹 페이지 컨텐츠를 변경하거나 사용자 특정 정보를 웹 페이지에 삽입). 경매 샘플은 동적 템플리트를 사용하여 관리자로 로그온한 사용자를 위해 탐색줄에 관리 링크를 제공하고, 사용자가 로그인하면 "로그인" 단추를 변경하여 "로그아웃"으로 읽습니다.

웹 페이지 템플리트 작성에 대한 자세한 정보는 페이지 템플리트 작성 도움말 항목을 참조하십시오.

Page Designer로 JavaServer Faces 컴포넌트를 JSP 파일에 추가

JSF(JavaServer Faces)는 응용프로그램 서버에서 실행된 동적 웹 응용프로그램의 사용자 인터페이스 빌드를 지원하는 기술입니다. JSF는 개방형 표준 언어이고 JavaServer Faces 표준 태그 라이브러리를 사용합니다. 태그는 HTML 코드로 삽입되어 동적 Web 페이지를 작성합니다.

JSF 프레임워크는 서버 요청 전반에서 사용자 인터페이스 상태를 관리하고, 간단한 개발 모델을 제공하여 클라이언트에서 활성화된 서버측 이벤트를 처리합니다. 예를 들어 JSF에는 다른 이벤트에 대해 단추 클릭과 같은 지정된 동작이 포함될 수 있습니다. 웹 페이지로 끌어올 수 있는 팔레트에 Page Designer의 기본 기능이 시각적으로 표시되어 있습니다. 이 끌어서 놓기 기능을 사용하면 JSF, HTML 및 기타 스크립트 요소를 쉽게 사용할 수 있습니다. 이는 텍스트 필드의 값 유형(정수, 영숫자)과 같은 기본 필드 기능을 제어하는 데 유용할 뿐만 아니라 유효성 검증 규칙을 설정할 수도 있습니다. Page Designer에서 JSF 제어는 각 페이지와 연관된 SDO 데이터에 바인드될 수 있습니다.

Page Designer 팔레트는 추가 기능을 JSF 페이지에 추가할 때 사용할 수 있습니다. 예를 들어 "바로 구매" 단추를 항목 세부 페이지에 추가하면 판매자가 설정한 값에 항목을 구매할 수 있습니다.

다음 그림은 경매 세부 페이지에 대한 JSF 제어를 보여줍니다. 그림의 오른쪽 아래와 같이 정수만 선택란을 선택하면 newbid inputText 필드는 정수만 사용할 수 있도록 제한됩니다. 그림 왼쪽 아래의 h:inputText 밑에 있는 탭에 정의된 대로 inputText 필드에는 유효성 검증, 동작 및 내게 필요한 옵션에 대한 추가 설정이 있습니다. 유효성 검증 탭에서 Java를 사용해 특정 유효성 검증 규칙을 정의합니다. 예를 들어 newbid inputText 필드에 입력할 수 있는 값은 널(null)이 아닌 정수로 입찰 시작값보다 크고 현재 입찰값+1보다 커야 합니다.

이 다이어그램은 경매 세부 페이지에 사용된 JSF 제어를 보여줍니다.

경매 응용프로그램의 itemdetails 페이지에 있는 newbid inputText 필드에 생성된 코드는 다음과 같습니다.

<h:inputText styleClass="inputText" id="newbid" required="true" size="14">
    <f:convertNumber integerOnly="true" />
    <f:validateLongRange minimum="#{pc_Itemdetail.userFacadeLocalGetFindHighestBidResultBean==null ?
        pc_Itemdetail.userFacadeLocalGetBidItemSDOByKeyResultBean.startingbid :
        pc_Itemdetail.userFacadeLocalGetFindHighestBidResultBean.currentbid+1}">
    </f:validateLongRange>
</h:inputText>

Faces JSP 파일 개발에 대한 자세한 정보는 JavaServer Faces 도움말 항목을 참조하십시오.

웹 서비스 작성

웹 서비스는 웹 응용프로그램에 종속되지 않기 때문에 웹 응용프로그램과 병행하여 개발되었습니다. 웹 서비스는 비즈니스 로직에 액세스하는 또 다른 방법이며, 웹 응용프로그램 기능 중 일부만 포함됩니다. 경매 응용프로그램의 일부인 웹 서비스에 대한 자세한 설명은 웹 서비스 섹션을 참조하십시오.

경매 프로젝트 조직

경매 웹 응용프로그램에는 수많은 프로젝트가 있습니다. 각 프로젝트마다 목적이 다릅니다. 다음 목록은 프로젝트의 종류와 경매 샘플에서 어떻게 사용되지 설명합니다.
  • AuctionV60EAR 프로젝트는 주요 EAR(Enterprise Archive)로서 응용프로그램 서버에 배치됩니다. 런타임 환경에서 필수인 프로젝트입니다.
  • AuctionV60EJB 프로젝트는 EJB와 Facade 클래스를 포함합니다.
  • AuctionV60EJBClient 프로젝트는 SDO 클래스와 같은 생성된 코드를 보유하며 클라이언트에 배치됩니다.
  • AuctionV60Web 프로젝트에는 모든 JSF 파일, 템플리트 및 JSF 파일 실행에 필요한 비즈니스 로직이 포함됩니다.
  • AuctionV60WebService 프로젝트에는 웹 서비스 WSDL 파일과 웹 서비스에 대한 Java 소스가 포함됩니다.
  • OIDGenerator 프로젝트 및 OIDGeneratorClient는 데이터 베이스 삽입을 위해 새 키를 작성할 때 필요합니다.
상위 주제: 경매 웹 응용프로그램

피드백