Whitepaper JEUS Syetem Architecture Copyrightc 2001 TmaxSoft Co.,Ltd. All Right Reserved.
Contents JEUS System 2 I. JEUS System 운영 1. JEUS Manager 4 2. Naming & Directory Server 5 3. Security Server 5 II. Server Application 운영 1. WebtoB Light 7 2. Web Container 7 3. EJB Container 8 4. JMS Server 9 5. Transaction Manager 9 6. Scheduler 10 7. 데이터베이스 Connection Pool 11 III. Client Application 운영 1. Client Container 12 2. Applet Container 12 3. JNLP Server 와 JNLP Client Container 13 4. JEUS COM Bridge for COM/DCOM 13 5. RMI/IIOP for CORBA 14 IV. JEUS System 관리 1. Jadmin 15 2. Jdeploy 16 3. Web Admin 17 4. Console Tools 18 JEUS System Architecture 1
JEUS System JEUS(Java Enterprise User Solution) 는 Java 2 Enterprise Edition(J2EE) 표준을완벽하게준수하는 Java 기반의 Web Application Server(WAS) 이다. JEUS는기업용소프트웨어개발의근간이되는다양하고강력한기능들을제공하며, 인터넷을통한서비스제공뿐만아니라인트라넷기반의다양한시스템모델을위한플랫폼을제공한다. J2EE 를기반으로개발된어떠한어플리케이션도 JEUS에의해운영될수있으며시스템의효율적인관리를위하여시스템전체를모니터링하고운영하는기능과시스템의배치, 수정, 제어, 삭제가용이하도록지원하는기능이제공된다. 다양한모델의시스템특성에맞추어시스템을최적으로개발또는튜닝할수있는 JEUS 고유의다양한 optimization 기능은시스템의전체성능을더욱향상시켜준다. JEUS가제공하는주요한기능들은다음과같다. JEUS Manager에의해관리되는 JEUS Cluster 및시스템 FailOver Servlet, JSP 기반의 Presentation 어플리케이션프로그램의배치및운영 EJB 기반의분산객체시스템의배치및운영 active stub 기반의분산객체시스템에서의컴포넌트 FailOver 및 Load Balancing JEUS Cluster 전체의 Naming 및 Directory 정보를관리하는 Naming & Directory 서버와 JNDI API 를이용한정보접근 JMS 를기반으로하는메세징시스템의운영 Web또는인트라넷환경의클라이언트에대한 Authentication 및시스템상의각종리소스들에대한 Authorization을담당하는 Security서버와이들정보의관리 데이터베이스 Conneciton Pool에의한데이터베이스로의 Connection을관리 HTTP 기반의클라이언트요청을받아들이는 Web Server 기능 JTS API 를이용해접근가능한트랜잭션서비스 Java Network Launching Protocol(JNLP) 기반의한클라이언 JEUS System Architecture 2
트모듈의관리 Client Container를통한인트라넷클라이언트어플리케이션으로부터서버로의자유로운접근 Applet 어플리케이션의서버접근을위한 Applet Container 정해진시간에작업이수행되도록관리하여주는 Scheduler Interoperability를위한 JEUS Com Bridge(COM/DCOM) 와 RMI/IIOP(CORBA) 시스템의운영및관리를위한 Jadmin, Jdeploy 툴 Web을통한시스템관리를지원하는 Web Admin 서버 HTML Document Java Application Applet Java Application COM/DCOM Application CORBA Application Web Browser JNLP Client (ex. WebStart) Applet Container Web Browser Client Container Jeus COM Bridge RMI/IIOP Web Admin WebToB Light Web EJB JMS Container Container Container Engine Container JDBC Connection Pool DB Web EJB JMS Container Container Container Engine Container JDBC Connection Pool DB Jadmin JNDI Client Security Client Scheduler Transaction Manager JNDI Client Security Client Scheduler Transaction Manager Jdeploy Web Admin Server JNLP Server Node Controller Remote Security Server JNDI Server Security Server Scheduler Session Manager Jeus Manager Class FTP Server Web EJB JMS Container Container Container Default Engine Container JDBC Connection Pool Transaction Manager DB JEUS System Architecture 3
I. JEUS System 운영 JEUS Manager JEUS Manager는 JEUS 시스템의 booting 을수행하여모든서브모듈들을시작시키고, 동작중인시스템을관리하며, down 명령을받아들여모듈들을종료시키는 JEUS 시스템운영의메인컴포넌트로노드당하나만존재한다. JEUS Manager 는서비스나 boot script 에등록되어시작되며 jeus script 를통해관리자에의해직접시작될수도있다. 시작된 JEUS Manager 는원격으로부터의명령을받아들일수있는대기상태에있으며 FTP 등과같은기본적인서비스만을제공한다. Boot 명령이주어지면설정파일을읽어기본모듈들과서비스를운영할 Container 들을기동시킨다. Clustering 이설정되어있다면 cluster 내의다른노드에서동작중인 JEUS Manager 등과연결을맺어네트워크를형성한다. JEUS 시스템은계층적운영구조를가지고있다. JEUS Cluster 내에는복수개의노드가존재할수있고, JEUS Manager 하나가노드하나를담당한다. 하나의노드에는복수개의 Engine Group 이존재할수있으며, 정상상태에서는하나의노드에하나의 Engine Group 만이존재하고다른노드의 Backup 이진행중인노드에서만 backup 용 Engine Group을포함하여복수개의 Engine Group 이동작한다. 하나의 Engine Group 에는복수개의 Engine Container 가존재할수있으며, 하나의 Engine Container 는하나의 JVM을담당한다. 하나의 Engine Container 에는복수개의 Engine이있을수있으며, 여기서 Engine 이란 Web Container, EJB Container, JMS Server를말한다. JEUS Manager 는자신의담당구역내에있는계층적으로구성된모듈들의구성정보를관리하고, 동작을감시하며, 동적제어및 FailOver를책임진다. cluster 내의다른 JEUS Manager와도설정정보를기반으로상호감시망을구성하여노드단위의 FailOver를수행한다. JEUS 의계층적운영체계를구성하는모든모듈들은동적으로추가, 변경, 삭제가가능하다. 동적인변경은변경동작을지시하는명령을내림으로써가능하며만약설정파일상의변경이필요한경우에는설정파일을변경한후명령을내리면 JEUS Manager 가설정파일의 JEUS System Architecture 4
변경을검사하여변경된사항을기준으로명령을수행하게된다. JEUS Manager는 down 시에노드내의모든 Engine Group들을 down 시키며 down 과정은계층을따라아래로진행된다. Down 이완료된상태의 JEUS Manager 는 boot 직전과같은상태로명령대기상태가된다. JEUS Manager 는 exit 명령을받아완전히실행을종료한다. Naming & Directory Server JEUS Naming & Directory Server는 JEUS Cluster 상에논리적인연결망을구성하여주는모듈로 booting 시에설정파일에따라망을형성하게된다. JEUS Manager 가동작하는 JVM 에각노드의 Naming & Directory 정보를담당하는 JNDI Server 동작하고, 각 JVM 에는각각의 JVM 정보를관리하기위한 JNDI Client 가동작한다. JNDI Server 는 cluster 내의 JNDI Server 들과채널을열며, JNDI Client 는자신의노드의 JNDI Server 에게연결한다. 기본적으로 Naming & Directory 정보는 JNDI Server 들간에복사되어관리되지만정보의 Propagation 범위는정보등록시에 option을이용하여조절할수있다. Security Server JEUS Security Server는 JEUS 시스템내에존재하는 user, group, role, resource 관련사용권한정보를관리한다. Security 정보에접근하는방식은크게원격에서의참조와서버내에서의참조로구분된다. 서버내에서는각서버어플리케이션의운영을담당하는 Web Container, EJB Container, JMS Server 에서 security 정보필요시참조되며, 이를위하여 Naming & Directory 서버와유사한 security 정보망을 JEUS Cluster 내에형성하게된다. Security Server는 JEUS Manager 가동작하는 JVM 에서동작하며, 노드당하나만존재한다. 또한다른 Security Server 와연결되며, Security Client 들은 JVM 당하나씩존재하여해당노드의 Security Server와연결된다. 원격으로부터의접근시에는 Remote Security Server 가 security 관 JEUS System Architecture 5
련정보를제공하게된다. 이경우에는반드시먼저 authentication 과정을거친후에정보접근이허락된다. 각종 console tool들, 클라이언트어플리케이션들이이에해당된다. Web Browser 를통해 HTTP 프로토콜을이용하여접근하는클라이언트의경우에만 Web Container 가 Security Server로부터정보를얻어 authentication 과정을대신진행한다. JEUS System Architecture 6
II. Server Application 운영 WebtoB Light WebtoB는 HTTP 프로토콜을이용하는클라이언트의요청을받아들이는 Web Server 이다. WebtoB Light는동회사의 Web Server 제품인 WebtoB를 JEUS 시스템의기능요구사항에적합하도록최적화한것으로 C로작성된모듈이다. 클라이언트의요청이 CGI, SSI, PHP, HTML 에대한것이면 WebtoB Light 가바로처리하게된다. Servlet 또는 JSP로작성된서비스에대한요청은 Web Container로 redirect 된다. WebtoB Light는별도의 Process 로동작하며이들 Process들이 Cluster 되도록설정할수있다. WebtoB Light 의설정방식과세부적운영방식은 WebtoB 제품의설정방식과세부적운영방식과같다. 이는 WebtoB관련자료에소개되어있다. Web Container Web Container는 J2EE 플랫폼에서 Presentation 로직을담당하는 Servlet 과 JSP를기반으로작성된서버어플리케이션의운영을담당하는모듈이다. JEUS Web Container는 J2EE의 Servlet, JSP 표준을준수한다. 하나의 Web Container는복수개의 Context Group을포함하고있으며, 하나의 Context Group은마치 Virtual Host와유사한기능을제공하여서로다른 Context Group 은완전히분리된독자적실행환경을보장받는다. Context Group은복수개의 Context 로구성되며, 하나의 Context는복수개의 Servlet 또는 JSP 어플리케이션으로구성된다. Web Container는 JEUS 시스템내의 WebtoB Light와연결되어클라이언트의요청을받을수도있고, Apache 와도연결될수있다. 자체 HTTP Listener도있어 Web Server 기능까지할수있지만대용량의클라이언트요청처리에는부적합하므로실제시스템운영시에는별도 JEUS System Architecture 7
의 Web Server(WebtoB또는 Apache) 모듈을사용하고, 자체 HTTP Listener는 Web Container 동작의 correctness 를확인할때만사용하는것을권장한다. Web Container는 Cluster 로구성되어사용될수도있는데이때중요하게동작하는모듈은 Session Manager 이다. 기본적으로각 Web Container 에서생성된 Session은각 Web Container에서관리를하지만 FailOver, Load Balancing의목적으로별도의 Session Manager를두어관리를맡길수있다. Session Manager는 backup용 Session Manager를설정하여 failure에대비한다. EJB Container EJB Container는 J2EE 의 business 로직을담당하는 EJB(Enterprise Java Bean) 를기반으로작성된서버어플리케이션의운영을담당하는모듈이다. EJB Container는 EJB 1.1 을완벽하게지원하여 Stateless Session, Stateful Session, Bean-Managed Persistence Entity, Container-Managed Persistence Entity 타입을모두지원하며, EJB 2.0 의 Message-Driven 타입도지원한다. 하나의 EJB Container 내에는복수개의 EJB Module 이존재하며대게 Module 하나가어플리케이션작업그룹하나를구성하게된다. EJB Module 내에는이작업그룹을구성하는복수개의 EJB Bean 이존재하게된다. 운영중인 EJB Bean으로의접근은기본적으로 Naming 서버로부터해당 Bean의 EJB Home 을찾아옴으로써가능하다. JEUS EJB Container는클라이언트가 3가지프로토콜을이용하여접근가능하도록한다. 첫째로, RMI(Remote Method Invocation) 클라이언트가접근할경우는 RMI registry Naming 서비스와연동하며 J2SE 에포함된 RMI Runtime 이사용된다. RMI 동작에필요한동적클래스 download 는 Class FTP를이용하여할수도있다. 둘째로, CORBA(Common Object Request Broker Architecture) 클라이언트가접근할경우는 CosNaming 과연동하여 EJB Home 이건내지며이경우는 J2SE에포함된 RMI/IIOP 와 ORB 가사용된다. 셋째로, COM(Component Object Model)/DCOM(Distributed COM) 클라이언트가접근할경우는 JEUS COM Bridge 가사용되며기본 Naming 서비스가사용된다. JEUS System Architecture 8
EJB Container는 Active Stub 기술을기반으로컴포넌트 Cluster 기능을제공하여 EJB Bean 단위의 FailOver 와 Load Balancing이가능하도록한다. Load Balancing 기능은 EJB Home을클라이언트가얻을때 Cluster된 EJB Home 들이골고루찾아지도록하여가능하며, FailOver 기능은각서비스호출시장애를자동으로감지하여 cluster 내의다른 EJB Bean으로호출이 redirection 되도록함으로써가능하다. JMS Server J2EE 의메세징시스템표준인 Java Message Server 기능을제공하는모듈이다. Business 로직에 JMS 를도입함으로써어플리케이션시스템은클라이언트의요청을 asynchronous 하게또는 deferred 되게처리할수있다. 메시지를 Queue나 Topic에저장해두고작업처리의일단을마침으로써그이후에이루어져야할작업과단계를구성하여분리처리할수있다. 후처리가가능한작업의경우는일단작업메시지를저장해두고추후에 EJB Message Driven Bean 등이설정된 Queue, Topic 으로부터메시지를받아처리할수있도록함으로써작업의효율성을증대시킬수있다. 하나의 JMS Server는복수개의 Queue나 Topic 을관리한다. Booting 시에자신이관리하는 Queue와 Topic을 Naming 서버에등록하며그외에 Queue, Topic 으로접근시에필요한 Connection Factory 등도등록한다. FailOver 발생시에는설정파일과 JMS 클라이언트에저장된 runtime 정보를함께이용하여 JMS Server 를복구시킨다. Transaction Manager JEUS Transaction Manager는 JTA(Java Transaction API) 를완벽하게지원한다. 기본구조는 OTS(Object Transaction System) 을따르고있지만통신메커니즘은성능상의이유로 ORB 에의지하지않고자체 JEUS System Architecture 9
Socket 통신망을구성하여동작한다. 2 phase commit, one phase commit, local transaction optimization 등다양한 commit 방식을제공하며, 이기종데이터베이스에대한 global 트랜잭션처리를보장한다. 하나의 Transaction Manager는하나의 JVM을담당하며, 만일트랜잭션이 JVM를넘어진행되면복수개의 Transaction Manager 가협동하여트랜잭션처리를하게된다. 현재 JEUS Transaction Manager는다른벤더의 OTS 방식의 Transaction Manager 와연동이되지않으며 RMI 를이용하여트랜잭션이이루어지는경우에만 Transaction Context 가 propagation 된다. Scheduler Scheduler는지정된시간에등록된작업을수행하여주는서비스를제공하는모듈이다. 하나의 Scheduler 는하나의 JVM을담당한다. 어플리케이션은약속된 interface 를구현한클래스의인스턴스를 Scheduler 에등록함으로써작업을등록한다. 등록되는순간에 Scheduler는등록된작업에대한실행시간정보를얻어내어 scheduling 하여두고시간이되면작업수행을위한특정함수를호출하여작업이이루어지도록한다. 작업을한번수행한후에는다시다음실행시간정보를얻어 scheduling 한다. 작업은어플리케이션에의해종료되거나클라이언트어플리케이션으로의연결이끊긴것이확인되었을때 Scheduler 에의해자동으로종료될수있다. 작업의실행방법은두가지이다. 기본적으로는메인쓰레드하나가모든작업을실행하지만작업시간이많이소요되는경우는별도의쓰레드에의해작업이진행되도록작업등록시에클라이언트가설정할수있다. 어플리케이션은작업등록시사용할 Scheduler를결정할수있는데 Web Container 나 EJB Container 에서는자신의 JVM 에서동작하는 Scheduler 에게만작업을등록할수있다. 또한뒤에서설명할 Client Container 에서는자신의 JVM를담당하는 Scheduler 에작업을등록하거나원격의서버측의 Scheduler 에게작업을등록할수있다. JEUS System Architecture 10
DB Connection Pool DB Connection Pool은데이터베이스로의 Connection을관리하는모듈이다. JEUS Connection Pool은 DataSource, ConnectionPoolDataSource, XADataSource, LocalXADataSource 의 4 가지타입을지원한다. DataSource 는 Naming 서버로부터 Connection Pool을찾아 Connection 을얻는기본기능만을제공하며, ConnectionPoolDataSource 이하나머지세가지타입에서는 Connection의 Pooling 기능을제공한다. XADataSource 는트랜잭션에사용되는 Connection을제공하며트랜잭션작업중에 Connection 을얻으려는시도가있으면 Transaction Manager 에게이를알려트랜잭션작업종료시에이정보가이용될수있도록한다. LocalXADataSource 는 Local Transaction Optimization 을사용하려할때이용된다. JEUS Connection Pool Manager 는 java.sql.drivermanager 와유사한존재로하나의 JVM을담당한다. Connection Pool 하나가 Naming 서버를통해한 JVM에서사용되게되면담당 Connection Pool Manager 가이를관리하게된다. 이정보는시스템모니터링툴을이용하여볼수있으며, Connection Pool 에대한동적제어또한 Connection Pool Manager 를통해이루어진다. JEUS System Architecture 11
III. Client Application 운영 Client Container Client Container 는자체 GUI 구성을가진클라이언트어플리케이션같은일반 Java 어플리케이션이 JEUS 시스템에접근하여서비스를받고자할때필요한설정및기능을제공하여주는모듈이다. Naming Client 는 JEUS Cluster 상의설정된노드에존재하는 JEUS Naming Server로연결하여서비스를제공한다. Security Server는 Client Container 내의모든 Security 관련기능을제공하며실제처리는하지않고 JEUS Cluster 의 Security Server 에전달만한다. Scheduling 서비스의경우는독자적인 Scheduler 가구동되며 JEUS Cluster 내의 Scheduler 에작업을등록하고자할경우는 Naming 서비스로부터원격의 Scheduler 를찾아등록하면된다. Booting 시에 Client Container 는먼저설정파일을읽어들여클라이언트어플리케이션을구동하기위한환경을구축하기위해필요한모듈들을초기화한다. 이때클라이언트의서버접근에사용될 user 의 authentication 등이이루어진다. 초기화과정을마친후실제클라이언트어플리케이션이실행되고, 실행이종료되면 Client Container 가정리작업을마친후 JVM 이사라지게된다. Applet Container Applet Container 는 Applet 으로구현된클라이언트어플리케이션이 JEUS 시스템에접근하기위해필요한기능을제공하는모듈이다. 기능적으로는 Client Container와유사하지만실제실행시점에서동적으로 download 받아동작하게되는특성에의해생기는 3가지큰차이점은다음과같다. 설정파일이없다. JEUS System Architecture 12
별도의초기화과정없이실제기능이사용되는시점에서기능별로초기화가이루어진다. 동작시점에 donwload 되므로필요한기능만포함하도록그크기를줄였다. JNLP Server 와 JNLP Client Container JNLP(Java Network Launching Protocol) 는클라이언트프로그램의자동설치및버전관리를위한규약으로 JEUS 시스템은이를위해 JNLP Server 와 JNLP Client Container 를제공한다. JNLP 서버는 JNLP 프로토콜을이용하여 WebStart 등의 JNLP 클라이언트가 JEUS 시스템에접근하였을때이를처리하여주는모듈로 Servlet 를기반으로구현되어있다. JNLP Client Container는 JNLP 를기반으로동작하는클라이언트어플리케이션에게 JEUS 시스템의서비스를제공하기위한모듈로그구성은기본적으로 Applet Container 와같지만설정파일을사용한다는점이다르다. JEUS COM Bridge for COM/DCOM JEUS COM Bridge for COM/DCOM 모듈은 COM/DCOM 을기반으로구현된클라이언트어플리케이션이 JEUS 의 EJB Container 에접근하고자할때사용되는모듈이다. Naming 서비스, EJB Bean 호출등의기능이제공되는데제품마다그방식이다르므로 JEUS COM Bridge는 COM/DCOM 어플리케이션과 JEUS의 EJB Container 가연결될때만사용된다. JEUS System Architecture 13
RMI/IIOP for CORBA RMI/IIOP for CORBA 는 CORBA 를기반으로구현된클라이언트어플리케이션이 JEUS 의 EJB Container 에연결되기위해사용되는모듈이다. RMI/IIOP는외부인터페이스는 RMI 의형식을따르지만실제동작은 ORB를사용하게된다. JEUS 는 J2SE의 RMI/IIOP 컴파일러와 ORB를사용한다. EJB Container는 EJB deploy 시에 CosNaming 서비스에해당 EJB Home을등록하고 CORBA 클라이언트는이것을찾아 RMI/IIOP 방식으로 EJB Bean의함수를호출함으로써작업이진행된다. JEUS System Architecture 14
IV. JEUS System 관리 Jadmin Jadmin은 JEUS 시스템의환경설정, 제어, 모니터링등시스템관리의핵심기능을제공하는툴이다. Jadmin 에서제공하는기능은다음과같다. JEUS Mananger, EJB Container, Web Container, JMS Server, JNLP Server, Security 등 JEUS 시스템내의각모듈의설정 전체시스템, 각 Container, 각어플리케이션의계층적모니터링 전체시스템의 boot, down 등과같은제어 Security 정보의추가, 변경, 삭제등관리작업 EJB Container, Web Container, JMS Server 의시작, 종료, 동적추가등의관리 데이터베이스 Connection Pool의동적추가 FTP 등의부가기능 JEUS System Architecture 15
Jdeploy Jdeploy 는 J2EE 어플리케이션의 packing, JEUS 시스템으로의 deployment, 어플리케이션별설정등어플리케이션관리의핵심기능을제공하는툴이다. Jdeploy 에서제공하는기능은다음과같다..ear,.war, EJB Module, Application Client 의 J2EE 표준을준수한 packaging 어플리케이션별설정파일을 xml 과 binary 타입으로생성, 변경.ear,.war, EJB Module, Application Client 의 J2EE 표준을준수한 deployment JEUS System Architecture 16
Web Admin Web Admin 은 Web Brower 를통해 JEUS 시스템을관리할수있도록하며기능상 Jadmin 과같다. Jadmin의경우는 Java 로작성된 GUI 로 JEUS 시스템을원격에서제어하고자할경우추가설치등의불편이있다. Web Admin 은 Web Browser 가설치된어디에서나사용될수있으며이를위해 JEUS Manager 가있는 JVM 에 WebAdmin Server 가동작하고있다. JEUS System Architecture 17
Console Tools JEUS는 console 상에서실행되는다양한기능의 script들을제공한다. 제공되는 console tool들은다음과같다. ejbadmin EJB Container와 EJB 어플리케이션을모니터링하고관리하기위한기능제공 ejbcompiler EJB 어플리케이션 deployment 과정에필요한코드생성작업을관리자가직접하고자할때사용됨 encode 임의의문자열의 Base64 인코딩관련기능제공 jeus JEUS Manager 를시작함으로써 JEUS 시스템을시작시키고자할때사용 jeusadmin JEUS Manager를모니터닝, 제어하는데필요한관리기능제공 jeusp Hotspot 이설치되지않는환경에서 JEUS 를시작하고자할때사용된다. 기본적으로 JEUS script와같고단지사용자의편의를위하여옵션변경을미리하여둔 script 이다. jmsadmin JMS Server 관리기능을제공 securityadmin Security 정보의관리기능을제공 webadmin Web Container 와 Servlet, JSP 어플리케이션의모니터링, 제어등관리기능제공 JEUS System Architecture 18