한국산학기술학회논문지 Vol. 11, No. 5 pp. 1708-1715, 2010 이명호 1* 1 세명대학교전자상거래학과 Design and Implementation of JPetStore Order System Based JBoss Seam Framework Myeong-Ho Lee 1* 1 Department of ecommerce, Semyung University 요약본논문은 Seam 프레임워크과연관된객체지향소프트웨어개발에대한지침과평가지표를제공하는데목적이있다. 기존의아키텍처가가지고있는문제점을해결하고장점들을지원하기위하여새롭게등장한표준화아키텍처가 Seam 아키텍처이다. 현재까지중량및경량컨테이너아키텍처의표준화를장점으로제안된잘알려진아키텍처로 Seam 프레임워크가있다. 따라서본연구에서는기존의중량과경량아키텍처가가지고있는단점들을해결하고장점들을지원하기위하여개발된최신경량컨테이너아키텍처인 Seam 프레임워크를기반으로 JPetStore 주문시스템의설계및구현을통하여이전의사양과의객관적인소프트웨어개발생산성지침을제공하고자한다. Abstract This paper proposes an object-oriented software development guidance and an evaluation index for the productivity related to Seam Framework. Heavyweight and lightweight architecture to resolve the problem with benefits to support the new architecture is a large size distributed object standardization architecture. This architecture, such as the Seam Framework, to provide all of the architecture is possible. The distributed object standardization architecture is most often used in business Seam Framework is well-known architecture. Therefore, this study is based on the Seam Framework large distributed object architecture, design and implementation of JPetStore order system based standardization software development productivity and the objective is to provide guidance. Key Words : Evaluation Index, Seam Framework, Heavyweight and Lightweight Architecture, Distributed Object 1. 서론 디지털컨버전스시대에서는새로운정보미디어나 IT 응용서비스와같은대용량의요구에대하여컴퓨팅자원관리자및제공자가지리적위치와상관없이다양한도메인의자원을이용하여고성능자원집합체를구축하고이를유연하고매우경제적으로제공하는차세대클라우드컴퓨팅및가상화환경의도입이대두되고있다. 사용 자는인터넷접속과연산기능만갖춘단말기만있으면장소에구애받지않고온라인상에서응용프로그램의이용과컴퓨팅서비스를제공받을수있다. 기업사용자는사용한만큼의비용만을클라우드컴퓨팅제공회사에지급하면되므로비용을절감하고이동성을제공받을수있으며, 제공회사는대량의가입자를유치하여수입을창출할수있는무한한가능성의시장이라할수있는것이다 [4-6]. 또한엔터프라이즈환경에서는이기종컴퓨터들 * 교신저자 : 이명호 (mhlee@semyung.ac.kr) 접수일 10 년 04 월 14 일수정일 10 년 05 월 07 일게재확정일 10 년 05 월 13 일 1708
간에프로그램을분산시켜부하를줄여시스템의성능저하와네트워크병목현상을줄일수있는분산객체구조가필요하게되었으며, 이를해결하기위한컴포넌트기반이나애자일개발방법론까지이르게되었다. 현재인정되고있는컴포넌트모델의표준은 MS사의 COM+, OMG의 CCM(CORBA Component Model), SUN사의 EJB(Enterprise JavaBeans) 등이있지만, 이중에서대용량분산객체의가장성공모델로알려진것이 EJB이다 [2-6]. EJB는 N-Tier의분산객체지향자바애플리케이션을개발하고보급하기위한컴포넌트구조로서 1998년에 SUN사에서 EJB 1.0 사양을만들면서 J2EE 플랫폼의핵심컴포넌트로자리잡았다. 2000년에 EJB 1.1 발표, 2006년에는 EJB 3.0 사양이발표되면서어떤프레임워크에도종속되지않으며, 어떤컨테이너에도종속되지않는일반적인자바객체인 POJO(Plain Old Java Object) 기반의코딩, 메타데이터, 엔티티빈의변화를통하여시대의요구사항에맞춰좀더유연하고, 테스트및개발하기쉬운새로운 EJB로탄생하게되었다 [2,3]. 또한자바블루프린트프로그램은 SUN사에서 J2EE 개발자들을위해내놓은애플리케이션프로그래밍모델이다. J2EE 블루프린트프로그램은 EJB, Servlet, JSP, JDBC, XML, JNDI와같은 J2EE의최신기술들을사용하여엔터프라이즈애플리케이션을구축할때필요한프로그래밍모델과이에따른분석및설계구현을위한추천사항을제공하며, 이러한추천사항들을실제구현을통해보여주고있는자바 Pet Store 인터넷전자상거래애플리케이션의가장잘알려진예제시스템이다 [7]. 그러나 EJB의단점은분산환경을지원하기위하여객체를직렬화하는과정때문에실행속도의저하가발생하며, 개발주기가소스수정, 빌드, 배포, 테스트와같은복잡한과정을거치기때문에개발생산성의저하가일어나며, 테스트의어려움으로제품의품질저하, 변형된패턴들로인한객체지향적으로개발하는데제약사항도발생하며, 대형벤더사들의 EJB 컨테이너사이의이식성저하등이발생한다 [6]. 이러한단점을해결하기위하여자바언어를위한경량 ORM 서비스인하이버네이트를개발한가빈킹 (Gavin King) 이 2005년에 Seam을개발하였다. Seam은차세대 Web 2.0을구현하기위한새로운애플리케이션프레임워크이다. 이를위하여 Ajax, JSF, EJB3, Java Portlets, jbpm등을결합시키는기술이다. 또한아키텍처와 API 수준에서의복잡성을줄이도록디자인되었으며, 복잡한웹애플리케이션구성에대하여 annotation을사용한 POJO로쉽게하였으며컴포넌트화시킨 UI 위젯을제공하고, XML 사용을줄였다 [1][8-10] [12]. 따라서본연구에서는 J2EE 플랫폼상에서개발된자바블루프린트자바 Pet Store 예제프로그램을 JBoss Seam 프레임워크를기반으로 JPetStore 주문시스템을설계하고구현함으로써이전의플랫폼과의객관적인소프트웨어개발생산성및표준화에따른평가지침을제공하고자한다. 2. Seam 프레임워크의기본개념 2.1. Seam 프레임워크의고찰 Seam은 2005년 9월 EJB 3.0, JSF, Ajax 기술기반의프레임워크를최초로발표하였다. 2006년 12월 Seam 1.1GA는 Seam Gen을제공하고, J2EE 1.4 애플리케이션서버에서 Seam 애플리케이션이작성가능하고, CRUD 애플리케이션프레임워크를제공한다. 2007년 2월 Seam 1.2GA는 Entity 레벨의보안, EL의지원, 향상된 Seam Gen과 XML을통한통합을개선하고, 향상된 Seam-Gen, Ajax4JSF의통합을이루었다. 2007년 12월 Seam 2.0GA 는개발에서컴포넌트배포의강점을지원하였으며개발툴인 Eclipse과 Maven을지원하였다. 2008년 10월 Seam 2.1GA는 Wicket의지원을위한최초의클래스이며, JSF 태그와 Facelets 템플릿을사용한 Excel과 CSV에서의리포트생성하고, Seam 시작시리소스배포능력을갖추었다. 다음그림 1은 Seam 프레임워크가애플리케이션코드와 Java EE 프레임워크사이에존재하는것을도식화한것이다 [10]. [ 그림 1] Java EE 프레임워크의 Seam 구성도 Seam을사용하는이유는 Java EE 5.0의핵심프레임워크인 EJB 3.0과 JSF를연결하고통합에필요한복잡한코드를대신수행하여 EJB 3.0을적용한최초의애플리케이션프레임워크이다. EJB 3.0을지원하는환경에제 1709
한국산학기술학회논문지제 11 권제 5 호, 2010 한되지않고다른 Java EE 환경이나 Tomcat에서도사용가능한 Java EE 5.0을지원한다. 오픈소스 Ajax 솔루션을기반으로한 JSF에통합되고, JavaScript를배울필요없이애플리케이션에쉽게적용가능하며, 잠재하는버그로부터의보호할수있도록 Ajax로구현이용이하다. 또한심각한메모리누수및성능병목현상, 보안문제, Back 버튼의오작동, 멀티탭브라우저의동작등의 HTTP 세션의과용문제를극복하기위해 stateful을사용하며, 동일한브라우저내에서여러작업에대한세션을구분하여여러탭의작업들이독립적인세션으로처리한다. 또한 HTTP Session의이용이보다쉽고효율적이고정밀한상태관리를할수있는혁신적인상태관리기능을제공한다. JBoss jbpm을통해비즈니스프로세스관리를통합하고, 모델, 구현, workflow와 pageflow를보다쉽게생성할수있도록화면흐름의관리가가능하다. Seam 컴포넌트나 POJO는테스트가가능하나복잡하고단독으로유닛테스트하기부적합하지만쉬운애플리케이션의시험가능성을제공하고 JUnit이나 TestNG에기록할수있는통합테스트의용이성이있다 [1,9]. 3. 비주얼모델링의분석및설계 3.1 개발환경 본연구에서는대용량분산객체시스템을개발하기위한 Seam을기반으로표 1과같은개발환경을이용하여 Seam 프레임워크환경에서의 JPetStore 주문시스템프로그램을분석하고설계한후파일럿시스템을구현하도록한다. [ 표 1] Seam 프레임워크의개발환경구분 Seam 2.0 O/S Windows Vista JAVA Java SE 1.6 / Java EE 1.5 WAS JBoss 5.0 DB Oracle 10g XE DB Modeling ERwin7.1 IDE TOOL Eclipse 3.4 CASE TOOL Rational Rose 2006 2.2 Seam의구성 Seam 프레임워크는 Web 2.0을구현하기위한 JBoss 의새로운애플리케이션프레임워크이다. 또한 Ajax, JSF, EJB3, Java Portlets, jbpm, Rules 등의다양한프레임워크및표준을유기적으로잘결합하여아키텍처와 API 수준에서의복잡도를줄이도록설계되었다. 기존의웹애플리케이션에서제공하지못했던다양한상태관리모델을제공하며 JPA를기본퍼시스턴스모델로사용한다 [8]. 따라서본연구에서 Seam 프레임워크기반의 JPetrStore 주문시스템을구현한구성도를살펴보면그림 2와같다 [10]. 3.2 DB 스키마의설계대용량표준분산객체처리를위한 Seam 프레임워크의 JPetStore 주문시스템의파일럿시스템은테이블로영속적인정보를저장하기위하여데이터모델이먼저정의되어야한다. 따라서자바 Pet Store 인터넷전자상거래애플리케이션의 DB 스키마를기반으로엔티티클래스의데이터모델을작성한다. 본연구에서파일럿시스템으로제시한데이터모델인데이터베이스스키마구조는그림 3과같이로그인정보, 회원가입 / 수정정보, 내주문정보, 주문서확인정보, 상세정보, 장바구니정보, 결재정보, 결재입력정보, 주문확인정보, 다른배송지정보, 카테고리정보, 종선택정보, 애완동물선택정보, 그리고검색정보등으로설계하여구현한다. [ 그림 2] Seam 의구성도 [ 그림 3] 데이터베이스스키마구조 1710
사용자항목별기능내역을요약하면다음표 2와같다. 회원정보 한명의회원은여러개의주문정보를가진다. 선택하나의주문정보는한명의회원정보만을가진다. 주문 [ 표 2] 사용자인터페이스별기능내역서 UI 항목첫화면로그인 (SignonForm.jsp) 회원가입및회원수정 (EditAccountForm.jap) 내주문 (ListOrder.jsp) 주문서확인 (ViewOrder.jsp) 상세정보 (Item.jsp) 장바구니 (Product.jsp) 결재 (Checkout.jsp) 결재정보입력 (NewOrderForm.jsp) 주문정보확인 (ConfirmOrder.jsp) 다른배송지정보 (ShippingForm.jsp) 카테고리 (Index.jsp) 종선택 (Category.jsp) 애완동물선택 (Product.jsp) 검색 (SearchProducts.jsp) UI 기능내역 index.html IncludeAccountFields.jsp IncludeMyList.jsp IncludeBanner.jsp (IncludeQuickHeader.jsp) IncludeBanner.jsp 주문 주문정보 재고 애완동물상세정보 애완동물종 동물카테고리 하나의주문은여러개의주문정보를가진다. 주문정보하나의주문정보는하나의주문을가진다. 하나의주문정보는하나의재고와애완동물상세정보를가진다. 하나의재고와애완동물상세정보는여러개의주문정보를가진다. 하나의재고는여러개의애완동물상세정보를가진다. 하나의애완동물상세정보는하나의재고만을가진다. 하나의애완동물상세정보는하나의애완동물종과공급자를가진다. 하나의애완동물종과공급자는여러개의애완동물상세정보를가진다. 하나의애완동물종은하나의동물카테고리와시퀀스를가진다. 하나의동물카테고리와시퀀스는여러개의애완동물종을가진다. 하나의동물카테고리는하나의시퀀스를가진다. 하나의시퀀스는하나의여러개의동물카테고리를가진다. 재고, 애완동물상세정보 애완동물상세정보 하나의시퀀스는여러명의공급자를가진다. 시퀀스공급자하나의공급자는하나의시퀀스를가진다. 3.3 유스케이스다이어그램 애완동물종, 공급자 동물카테고리, 시퀀스 시퀀스 JPetStore 주문시스템의기본적인요구사항을기술한문제기술서와유스케이스명세서를기반으로주문시스템에대한요구사항정의활동으로모델링한결과인유스케이스다이어그램으로표현해보면그림 4와같은유스케이스모델이된다. 엔티티형별로엔티티형의정의서를요약하면표 3과같다. [ 표 3] 엔티티형의정의서 엔티티 Relation 및 Membership 형로그인별개의테이블하나의프로필은여러개의회원정보를가진다. 프로필하나의회원정보는하나의프로필만을가진다. / 선택 선택 대상엔티티형 회원정보 배너하나의배너는여러개의프로필을가진다. 선택프로필하나의프로필은하나의배너를가진다. [ 그림 4] 주문시스템유스케이스다이어그램 1711
한국산학기술학회논문지제 11 권제 5 호, 2010 3.4 시퀀스다이어그램객체들간의메시지전송을시간적인순서로표현하는데효과적인다이어그램이시퀀스다이어그램이다. 유스케이스의기능을실현하기위하여필요한분석객체들의상호작용을시퀀스다이어그램으로표현한산출물이분석유스케이스실현모델이다. 따라서본연구의파일럿시스템에서중요한장바구니불러오기, 결재시회원확인, 그리고검색의분석유스케이스실현모델을시퀀스다이어그램으로표현하면그림 5, 그림 6, 그림 7과같다. [ 그림 5] 장바구니불러오기시퀀스다이어그램 따라서본연구에서도 Seam 프레임워크에서의회원가입폼 ID 확인 Ajax에대한 LoC를평가해보면표 4와같다. Seam은사용자가검색했던키워드정보를이용하여특정제품추천등과같은상태유지 (Stateful) 를사용한풍요로운웹을구현할수있다. 또한스크립트및 xml 통신을구현하지않고적은코드로쉽게구현이가능하다. [ 표 4] 회원가입폼 ID 확인 Ajax 평가표 항목 LoC Seam 2.0 Files jpg / xhtml Script 0 1 Code 8 위와동일 Java 26 1 xml (petstore-servlet.xml) 0 0 js (login.js /prototype.js) 0 0 합계 34 2 사용자인터페이스중회원가입및회원수정에서 ID 입력과메시지출력에대한구현내용은다음과같다. <h:inputtext id="id" value="#{user.id" required="true"> <a:support event="onkeyup" actionlistener="#{accountim.idsearch(user.id)" rerender="searchid" /> </h:inputtext> [ 그림 6] 결재시회원확인시퀀스다이어그램 <a:outputpanel id="searchid"> #{accountim.ajax </a:outputpanel> 또한컨텍스트 (Context) 로부터인젝션 (Injection) 을받으며, 만약객체변경이일어나면자동으로컨텍스트를다음과같이업데이트시킨다. @In(required=false) @Out(required=false) String ajax; [ 그림 7] 검색시퀀스다이어그램 4. Seam 프레임워크의평가 4.1 회원가입폼 ID 확인 Ajax 의평가 public void idsearch(string id) { User usersearch= null; try { setajax(null); usersearch = entitymanager.find(user.class, id); if(usersearch!=null && id!=""){ setajax(" 중복아이디 "); else if(usersearch==null && id!=""){ setajax(" 사용가능아이디 "); 1712
else{ setajax("id를입력해주세요 "); catch (Exception e) { setajax(" 에러 "); public String getajax() { return ajax; public void setajax(string ajax) { this.ajax = ajax; 따라서 Seam 프레임워크에서는간단하고쉽게 Ajax를구현할수있으면, 다른프레임워크들보다디버깅이쉽다. 4.2 JSF 와 JSTL 의태그평가 JSF(JavaServer Faces) 는컴포넌트구조, 표준위젯집합, 애플리케이션기반구조를정의하고있다. 컴포넌트구조는 UI 위젯을만드는공통적인방법을정의한다. 또한사용자의입력값을수집하고이벤트에응답하는자바객체인기반빈 (Backing Bean) 과 UI 컴포넌트를자동으로동기화시켜준다. 또한개발자가자바코드가아닌 HTML과같은식의태그를이용하여 UI를정의할수있는표준태그라이브러리인 JSTL(JavaServer Pages Standard Tag Library) 도있다 [11]. Seam 프레임워크에서 JPetStore 주문시스템의 JSF와 JSTL 태그평가표를요약하면표 5와같다. Java [ 표 5] JSF 와 JSTL 의태그평가표 Seam 2.0 항목 LoC Files jpg / xhtml 8 1 Controller.java 0 0 메시지출력 0 0 properties ( 메시지출력 ) - 1 합계 8 2 다음과같이 Seam에서의 datatable은단지테이블의컬럼을정의하는것만으로컴포넌트가행을순회하며, datatable 컴포넌트가 HTML을만들어내므로테이블을위한 HTML이전혀필요가없다. <h:datatable value="#{profavo" var="testt" bgcolor="#8b4513" border="0" cellspacing="2" cellpadding="3"> <h:column> <f:facet name="header"> <h:outputtext value=" 추천애완동물." /> </f:facet> <s:link action="#{categoryview.categorydetail(testt)" value="#{testt.name" /> <h:outputtext value="( #{testt.productid )" /> </h:column> </h:datatable> <f:subview id="favorpage" rendered="#{authenticator.page.equals('ture')"> <s:link action="#{authenticator.nextpage(4, 0)"> <h:outputtext value=" 다음 " /> </s:link> </f:subview> <f:subview id="favorpage2" rendered="#{authenticator.page2.equals('back')"> <s:link action="#{authenticator.backpage()"> <h:outputtext value=" 이전 " /> </s:link> </f:subview> 또한아래와같이 Seam으로 JSF의사용과입력값의유효성검증은매우편리하며, 강력한애플리케이션을개발할수있는프레임워크를갖추고있다. 그러나 Seam에서는테이블을디자인하는데어려움이발생한다. <div style="float: left; width: 85px" align="right"> 도시 :</div> <div align="left"><h:inputtext id="city" value="#{orders.billcity" size="17" required="true"/><h:message for="city" styleclass="errors"/></div> 4.3 한글처리평가 Seam에서한글처리는아래와같이필터에 param 설정값이없고각 XHTML에 UTF-8 형식만정의하면된다. 그러나페이지에서는 UTF-8의설정위치가다르다. 한글처리평가표를요약하면표 6과같다. [ 표 6] 한글처리평가표 항목 Seam 2.0 LoC Files page.jsp / xhtml 1 1 web.xml 8 1 합계 9 2 [*.xhtml] <head> <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" /> </head> 1713
한국산학기술학회논문지제 11 권제 5 호, 2010 [web.xml] <filter> <filter-name>seam Filter</filter-name> <filter-class>org.jboss.seam.servlet.seamfilter</filter-class> </filter> <filter-mapping> <filter-name>seam Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 이상과같은개발환경과데이터베이스스키마를기반으로 Seam 프레임워크기반에서 JPetStore 주문시스템을구현한메인화면은그림 9와같다. 4.4 XML 평가 다음표 7은 Seam 프레임워크에서 JPetStore 주문시스템에서사용하는 xml 파일항목들에대한 LoC 및파일들을요약한평가표이다. Seam에서는 XML이아닌 annotation을사용하며, 되도록다른프레임워크들과는다르게 XML 사용을최소화하게설계된다. [ 표 7] XML 평가표 항목 Seam 2.0 LoC Files (components.xml) (face-config.xml) (jboss-web.xml) (pages.xml) (web.xml) 293 8 (Seam-ds.xml) (ejb-jar.xml) (persistence.xml) 합계 293 8 [ 그림 9] JPetStore 주문시스템의메인화면 JPetStore 주문시스템중에서구현된회원가입을위한메인화면을살펴보면다음그림 10과같다. 5. 파일럿시스템의구현 Seam 프레임워크기반에서파일럿시스템은각유스케이스에사용되는화면간의전환을화면흐름모델로설계함으로써명시적으로분석하였다. 다음그림 8은 JPetStore 주문시스템의화면흐름모델을나타낸다. [ 그림 10] 회원가입의메인화면 JPetStore 주문시스템중에서구현된회원가입을위한실행화면을살펴보면다음그림 11과같다. [ 그림 8] JPetStore 주문시스템의화면흐름도 [ 그림 11] 회원가입의실행화면 1714
6. 결론 Seam 프레임워크는엔터프라이즈웹애플리케이션에서모든컴포넌트들에대하여일관되고쉽게이해되는프로그래밍모델을제공하기위하여 Java EE 5.0의최상위에놓여있으며, 애플리케이션으로부터대부분의상용구코드나 XML 구성을제거하였다. 통합문제를해결함에따라 Seam은웹개발자들에게이전에웹애플리케이션으로통합하기가너무어려웠던툴들을유용하게개방하였다 [10]. Seam은차세대 Web 2.0을구현하기위한새로운애플리케이션프레임워크로제안되고있으며, 이를위하여 JSF, EJB3, Bijection, Ajax, Java Portlets, jbpm등을결합시키는경량기반의프레임워크기술이다. 또한 Seam은아키텍처와 API 수준에서의복잡성을줄이도록디자인되었으며, 복잡한엔터프라이즈웹애플리케이션의구성을 annotation을사용한 POJO로쉽게하였고, 컴포넌트화된 UI 위젯을제공한다. 그러나현재까지경량컨테이너아키텍처의성공모델로알려진 Seam 프레임워크사양의정량적인성과지표개발및사례의부족으로이전사양으로운영중인실무프로젝트의업그레이드나새로운기술사양의적용이미비하였다. 그이유는기본적인 Seam 프레임워크의기술변화의속도가빠르고표준사양의복잡도가높음에따라쉽게새로운사양들을현업에적용하지못한것이다. 또한 Seam 프레임워크의소프트웨어개발생산성비교에대한연구도부족한상태이며, Seam 프레임워크의새로운사양이발표됨에도현재까지구체적인분석및설계기반에따른구현지침이부족하여소프트웨어생산성의평가와프로젝트의새로운시도에제한이있었다. 따라서본연구에서는대용량분산객체시스템처리를위하여 Seam 프레임워크를기반으로 JPetStore 주문시스템의분석및설계를통하여구현지침을제시하였다. 또한 Seam 프레임워크에대한성능평가기반으로정량적인분석을통하여객관적인소프트웨어개발생산성연구에대한지침을제시하였다. 향후에는동일한데이터베이스스키마를이용하여 Spring과 Seam 프레임워크의소프트웨어개발생산성분석연구가지속되어야할것이다. 참고문헌 리의설계및구현 ", 대한설비관리학회지, 제13권제2 호, pp. 45-51, 2008. [3] 이명호, EJB2.0과 EJB3.0의소프트웨어개발생산성비교연구 ", 한국산업경영시스템학회지, 제31권제3호, pp. 1-7, 2008. [4] 이명호, 경량컨테이너구조환경의스프링프레임워크 2.5를기반으로호텔예약시스템의설계및구현 ", 한국산학기술학회논문지, 제10권제3호, pp. 589-595, 2009. [5] 이명호, 스프링 2.0과하이버네이트 3.2를이용한경량컨테이너구조의설계및구현 ", 대한설비관리학회지, 제14권제2호, pp. 111-117, 2009. [6] 이명호, 동일한경량컨테이너구조환경에서스프링프레임워크 2.0과 2.5의개발생산성비교연구 ", 한국산학기술학회논문지, 제10권제6호, pp. 1265-1274, 2009. [7] 이용원, 박지훈외, J2EE 응용과디자인패턴, 대청, pp. 603-785, 2002. [8] Dan Allen, "SEAM In Action", Manning, pp. 3-136, 2009. [9] Jim Farley, "Practical JBoss Seam Projects", Apress, pp. 1-98, 2007. [10] Joseph F. Nusairat, "Beginning JBoss Seam:From Novice to Professional", Apress, pp. 1-186, 2007. [11] Kito D. Mann, "JavaServer Faces In Action", Manning, pp. 4-184, 2005. [12] Michael J. Yuan, Jacob Orshalick, and Thomas Heute, "Seam Framework", Prentice Hall, pp. 3-73, 2009. 이명호 (Myeong-Ho Lee) [ 종신회원 ] 1984 년 2 월 : 아주대학교산업공학과 ( 공학사 ) 1986 년 2 월 : 아주대학교대학원산업공학과 ( 공학석사 ) 2001 년 2 월 : 아주대학교대학원산업공학과 ( 공학박사 ) 2002 년 3 월 ~ 현재 : 세명대학교전자상거래학과부교수 < 관심분야 > 물류정보시스템, WAS 프로그래밍, 모니터링시스템 [1] 김병곤, 오재용, 원종석, JBoss Application Server 5, 가메출판사, pp. 21-196, 2009. [2] 이명호, EJB 3.0 표준을기반으로대용량분산객체처 1715