- 1. 서문 & 언터프라이즈 환경의 서블릿
- BOOK Study/J2EE
- 2010/01/25 23:49
ㅇ 누구를 위한 책인가 ?
- 이 책은 자바 언어와 자바 핵심 API에 익숙한 개발자들을 대상으로 한다.
ㅇ 이책에서 다루고 있는 내용
- 엔터프라이즈 환경에서 서블릿을 사용하기 적합한 곳과 사용법에 대한 전반적인 개념 설명으로 시작한다.
- 2,3장에서는 서블릿 API를 다룬다.
- 4장에서는 웹 애플리케이션의 구조와 웹 서버에 배치하는 방법을 알아본다 .
- 5-7장에서는 서블릿의 강력한 특징 중 일부분인 새션관리, 서블릿 영속성, 필터에 대해서 알아 볼것이다.
- 8장에서는 자바 서블릿을 보완하는 기술인 JSP에 대해서 알아 볼것이다.
- 9-11장에서는 실제 실행하는 환경에 웹 애플리케이션을 배치할 때 발생되는 문제들에 대해서 알아보게 된다. 디버깅 방법에 대해서 알아보고, 틀래스 로딩과 동기화를 고려하지 않았을때 발생될수 있는 문제점들을 알아볼것이다.
- 12,13장에서는 성능과 유지보수에 영향을 줄수 있는 효과적인 웹 애플리케이션 설계 방법에 대해서 알아본다. 좋은 애플리케이션을 만들기 위해 사용되는 여러가지 패턴들에 대해서 알아보고, 웹 애플리케이션의 성능과 확장성을 개선하기 위해 사용하는 테크닉과 도구들에 대해서 알아볼것이다.
- 마지막으로 14장에서는 웹서비스의 정보에 접근하는 에이전트로 서블릿을사용하는 방법에 대해서 알아볼것이다.
이책의 소스 코드를 다운로드 하는 방법
http://www.wrox.com/에 접속하여, 검색 기능을 이요하면 이책의 코드를 다운로드 할수 있다.
1, 엔터프라이즈 환경의 서블릿
자바는 분산 프렛폼에서 사용할수 있는 이미 검증된기술이다. 이책을 읽고 있는 독자들은 이미 J2SE에 익숙할거싱다. 이책에서 초점을 맞추어 진행 할 내용은 J2EE이다. 좀더 정확하게 말하자면, J2EE의 한 부분인 자바 서블릿 2.3API에 대해서 자세하게 다룰 것이다.
J2SE를 기반으로 한 J2EE는 엔터프라이즈 애플리케이션개발과 배치에 필요한 API와 서비스들을 제공한다. J2SE와 J2EE의 서비스와 라이브러리를 이용하면 플래폼 독립적인 웹 서기반 애플리케이션 개발을 쉽게 할수 있다. 그리고 J2EE 플렛폼에서는 J2EE애플리케이션이 설치되고 작동될 환경을 서버 벤더가 제공할수 있다.
- 분산 애플리케이션으로 앤터프라이즈 아키텍처를 구성하는 방법과 웹 애플리케이션이 포함되는 계층에 대해서 알아본다.
- J2EE아키텍처가 웹 컨테이너와 자바 서블릿을 이용하여 쉽게 웹 개발을 하는 방법과 서블릿 개발자들이 애플리케이션을 개발하면서 필요한 J2EE서비스와 라이브러리에 대해 알아본다.
- 서블릿 2.4 스펙을 이용하여 자바 서블릿으로 웹 애플리케이션을 개발할때 얻을수 잇는 장점에 대해서 알아본다.
- 컨테이너 제작 업체와 개발자가 서블릿 스펙을 구현할때 각자의 역할에 대해서 이야기 하며, 서블릿 스펙의 참조 구현 웹 컨테이너 / 서버인 톰캣을 소개한다.
- 이장의 마무리는 앤터프라이즈 애플리케이션에서 서블릿의 역할, 중요성, 적절함 등에 대해서 알아본다.
ㅇ 네트워크와 프로토콜
모든 시스템은 유선등의 물리적인 네트워크로 서로 연결된다. 이러한 네트워크는 컴퓨터 시스템과 그안에서 작동되는 소프트웨어들 사이에 커뮤니케이션을 위한 연결을 제공한다. 기본적인 네트워크 토폴로지들은 아래 내용과 같다.
- 스타 토폴로지 : 허브라고 불리는 중심점이 되는 컴퓨터에 연결시키는데 사용된다.
- 링 토폴로지 : 각각의 컴퓨터들이 막힌 루프형태로 서로 연결되어 있다.
- 공유된 하나의 통로를 이용하여 시스템 커뮤니케이션을 한다.
이 토폴로지들은 주로 LAN환경에서 사용된다. 이러한 토폴로지들은 가장 일반적인 구조이며, 서로 조합되거나 파생된 형태의 다른 토폴로지도 존재한다.
프로토콜이란 커뮤니케이션을 위한 규칙의 집합이다. 많은 프로토콜들이 공통 표준과 메시지 형식을 지정하여 개발되었기 때문에, 서로 다른 시스템간에 정보와 데이터를 교환할수 있다. 이러한 프로토콜은 특정 서비스를 제공하도록 설계되었으며, 실뢰성있는 네트워킹 서비스를 제공하기 위하여 계층으로 되어 있다.
물리적 단계에서는 하드웨어적인 물리적 연결이 통신하는 컴퓨터들 사이에 놓이게 된다. 그리고, 필수적으로 네트워크 카드와 유무선 연결이 포함된다. 이러한 연결은 컴퓨터간에 전달하는 메시지가 전달될 매체를 제공된다.
네트워크 레이어에서는 컴퓨터간의 커뮤니케이션을 수비게 해주는 이더넷과 같은 프로토콜을 구현하며, 데이터를 프레임이라는 단위로 나누어 네트워크로전송하는것을 다룬다. 또한 데이터 전송크기와 큰 메시지의 분할과 재조립 방법을 결정혐, 네트워크에 문제가 발생하였을때 처리할 방법도 결정하게 된다.
시스템에서 전송된 메시지들은 계층화된 프로토콜에 쌓여서 네트워크에 있는 다른 시스템으로 전송되며, 메시지를 받은 시스템에서는 반대로 메시지의 프로토콜을 제거한다. 논리적으로 각 레이어는 상대 컴퓨터의 동일한 레이어와 통신하게 된다.
TCP/IP
IP는 패킷의 크기를 결정하고 각 패킷이 목적지로 찾아가는 매커니즘을 정의하게 된다. 이 프로토콜은 연결된 컴퓨터의 IP주소를 이용하여 데이터가 네트워크를 통해 목적지로 찾아 갈수 있게 한다. 그리고 데이터의 유실이나 도착 순서가 바뀌는 등의 문제 ㅁ때문에 비교적 신뢰할수 없는 프로ㅗ콜이기도 하다. TCP는 연결성 통신으로 애플리케이션 레이어를 제공한다. 그리고 데이터의 모든 패킷을 받고 정확한 순서로 재조립하기 땜분에 IP와는 다르게 신뢰성이 있다.
HTTP
주로 애플리케이션 레이어의 통신방법으로 제공된다. 웹애플리케이션에서 가장 많이 사용되는 프로토콜은 HTTP이다. 웹 컨테이너와 J2EE 애플리케이션들은 사용자의 요청, 응답 프로토콜로 HTTP를 지원해야 한다. 웹의 가장 일반적인 최상위 프로토콜이기 때문에 HTTP를 사용하는 애플리케이션은 통신하려는 대부분의 서버들과 메시ㅣ지 교환이 가능하다.
HTTP는 송수신 요청을 정의된 형식으로 제공하며, 서로 다른 시스템과 언어로 개발된 애플리케이션들이 통신할수 있는 공통 언어의 역할을 하게 된다.
HTTP는 다른 프로토콜보다 많은 서버와 클라이언트가 사용하룻 이슨 웹의 표준언어이며, 대부분의 웹 서블릿 개발에 사용되는 궁극적인 프로토콜이다.
ㅇ계층화된 아키텍쳐
엔터프라이즈 애플리이케이션 개발 방식이 점점 3계층이상의 다계층 애플리케이션 모델로 많이 변화되고 있다. 애플리케이션을 논리적으로 서로 다른 여러 계층으로 분리 시키는것은 아래와 같은 장점이 있다.
- 관련된 규칙과 각 계층에 적합한 기능을 모듈로 캡슐화 할수 있으며, 쉬운 유지보수와 개발이 가능하다.
- 모듈화는 컴포넌트 기반 개발을 통하여 비즈니스, 프리젠테이션 등 로직의 유연성과 재사용성에 도움을 준다.
- 다른 계층간의 관계와 제공해야 할 서비스들을 미리 정의한다면, 각 개발자들이 자신이 갖고 있는 기술들을 특정 계층에만 초점을 맞추어 개발 할수 있다.
클라이언트 계층 : 데이터와 정보를 사용자에게 설명하거나 보여주는 계층이다.
서버와 중간계층 : 클라이언트가 요청한 데이터나 액션을 처리하여 응답한다. 여기서는 일반적으로 핵심 애플리케이션 로직이 존재하게 된다. 그러나 중간계층은 다시 두개의 계층으로 구분되게 된다.
비즈니스 계층 : 비즈니스 로직을 책임지는 계층이다. 애플리케이션 신뢰도를 위해 비즈니스규칙을 구현하는 것이 중요하다.
웹 계층(프리젠테이션 계층) : 비즈니스 데이터를 클라이언트에게 보여주기 위해서 재가공하는 계층이다. 클라리언트의 요청을 받아 해당되는 비즈니스 로직이 있는 비즈니스 계층으로 데이터를 포워드 한다.
ㅇ J2EE 플랫폼
자바는 스펙에 따라 표준화도니 많은 서비스와 API가 있기 때문에 개발자가 쉽게 이용할수 있다. 다시말해 표준에 맞는 서버에서 개발한다면, 다른 벤더의 서버에서도 별 다른 어려움 없이 개발된 애플리케이션을 배치 할수 있다는 의미이다.
J2EE 애플리케이션의 자바 기반 클라이언트는 씬 클라이언트의 구조를 이용한다. 씬 클라이언트란 서버와 통신하는 비교적 가벼운 클라이언트 애플리케이션을 의미한다.
ㅇ 웹 컨테이너
웹 애플리케이션을 위한 웹 컴포넌트인 서블릿과 JSP페이지의 실행을 관리하는 자바 실행환경이다. 그리고 웹 서바나 애플리케이션 서벙듸 일부분으로 요청과 응답을 만드는 네트워크 서비스를 제공한다. 웹 컨테이너는 반드시 HTTP를 지원해야 하며, 부가적으로 다른 종류의 프로토콜을 지원할수 있고, 웹 서버의 일부분으로 제작되거나 웹 서버의 플러그인 컴포넌트로 제작될수 도 있다. 웹 컨테이너는 서블릿과 JSP 인스턴스의 라이프 사이클과 실행을 관리한다.
ㅇ EJB 컨테이너
엔터프라이즈 자바빈즈는 비즈니스 규칙과 로직이 있는 비즈니스 컴포넌트이다. EJB에는 두가지 기본적인 종류가 있으며, 구중 하나는 데이터 자체와 강하게 결합되어 데이터 접근과 영속성 관리를 하는 엔티티빈이다. 다른 하나는 세션빈으로 로직을 표현하며, 클라이언트 요청을 처리하거나 데이터 처리 로직을 담당한다.
EJB 컴포넌트는 EJB컨테이너 안에서 실행된다. EJB컴포넌트는 재사용 가능하며 최적화를 위해 인스턴스가 풀링 되고 재활용되도록 설계하였다. EJB컨테이너는 애플리케이션을 위해서 EJB컴포넌트의 실행과 폴링을 관리할 책임이 있다.
ㅇ 자바 서블릿
서블릿은 동적으로 요청을 처리하고 응답을 생성하는 자바 클래스이다. 결국 요청에대해서 동적 HTML 페이지를 응답으로 생성한다는 뜻이다. 그러나, 애플릿이나 자바 애플리케이션에 직렬화된 자바 객체를 응답으로 생성한다는 뜻이다. 그러나, 애플릿이나 자바 애플리케이션에 직렬화된 자바 객체를 응답으로 보낼수 있으며, XML 같은 다른 형태로도 응답의 데이터를 보낼수 있다. 서블릿은 서블릿 컨테이너에서 동작하며 컨테이너가 제공하는 서비스에 접근할수 있다.
ㅇ서블릿 라이프 사이클
1. 컨테이너는 서블릿이 요청을 처리하기 전에 초기화 한다.
2. 서블릿 컴포넌트는 클라이언트 계층의 요청을 받는다. 컨테이너가 실제적으로 요청을 받아 적절한 컴포넌트의 인스턴스와 연결하고, 형식화된 요청과 응답 객체를 컴포넌트에 전달한다.
3. 서블릿은 비즈니스 계층의 로직의 도움을 받거나 직접 데이터베이스나 엔터프라이즈 인포메이션 계층에서 정보를 추출하여 요청을 처리한다.
4. 처리가 끝나면 클라이언트에게 응답을 리턴한다.
5. 최정적으로 컨테이너는 생성된 서블릿 인스턴스를 종료한다.
ㅇ 서블릿 통신
1. 요청/응답 사이클 중에 클라이언트와 하는 통신
2. 컨테이너 호나경에 관한 정보나 JNDI리소스에 접근하기 위해서 서블릿 테이너와 하는 통신
3. 다른 서블릿이나 EJB같은 서버의 다른 리소스와 하는 통신
4. 요청을 처리하기 위해서 데티어베이스나 레거시 시스템, EIS와 하는 통신
일반적으로는 서블릿의 역할은 클라이언트와의 통신이다. 컩테이너와의 통신은 클라이언트에게 리턴하기 위하여 데이터를 만드는 것과 달리 서비스를 제공하는 리소스에 접근한다. 실제로 유용하게 사용하기 위해서 스블릿은 다른 서버 컴포넌트나 데이터베이스 같은 외부 백엔드 리소스와도 통신한다.
ㅇ서블릿-클라이언트 통신
클라이언트와의 통신은 여러 형태로 할수 있짐나, 텍스트기반의 통신을 한다.
HTTP통신에서 일부 또는 모든 정보 파라미터는 요청의 일부분으로 전달된다. 서버의 응답으로 부터 클라이언트에 리턴할수 있는 데이터의 형식은 클라이언트에 따라서 다르다.
ㅇ서블릿의 이점
동적으로 생성되는 페이지가 필요하였고 CGI가 개발되어 이러한 역할을 수행하였다. CGI는 분리된 프로세스로 동작하는 CGI프로그램으로 요청을 넘겨 처리하게 되어 있다. 그러나, CGI 스크립트를 분리된 새로운 프로세스로 실행시키기 위해서는 처리시간이나 서버 리소스가 낭비되고 결국 확장성에 문제가 있게 되었다. 한번 실행된후에는 서버의 리소스나 정보에 접근할수 없다는 단점을 갖고 있다. 그리고 CGI 스크립트는 데이터베이스 커넥션 같은 리소스를 공유하거나 풀링 할수 없기 대문에 성능상의 문제가 있다.
이러한 CGI를 대체하기 위해여 서버 벤더들이 만든 기술이 있다.
CGI와 자바의 가장 분명한 차이는 프로세스 실행방식이다. CGI 스크립트는 개별적인 프로세스로 동작하는 데 비하여 자바 서블릿은 서버 프로세서ㅡ의 일부로 동작하기 때문에, 확실한 성능상의 이익이다. 그리고 서블릿 인스턴스는 각각의 호출 사이에 유지되기 때문에 매번 호출될 때마다 다시 생성할 필요가 없다. 또한 서블릿은 서블릿 컨테이너와 서블릿이 실행되는 실행 환경에 접근할수 잇다. 이것은 서블릿이 데이터베이스 같은 공유자원에 접근할수 있다는 뜻이다.
서블릿은 요청-응답 형식의 모든 CGI서비스를 제공하며, J2SE, API 서블릿 API 전체 J2EE API를 포함하여 여러가지 자바 라이브러리를 사용할수 있다. 그리고 외부 벤더가 제공하는 JDBC 드라이버나 XML 파서 같은 외부의 다른 API들도 사용할수 있으며, 이러한 라이브러리와 API는 플렛폼과 서버에 독립적으로 사용할수 있다.
ㅇ프로토콜의 유연성
- javax.servlet
- javax.servlet.http
ㅇJSP 컴포넌트
JSP 는 서블릿 기술을 웹 컨텐츠를 생성하는 일부분으로써 확장한 기술이다. JSP는 directive 태그, scriptlets로 불리는 일반 자바코드와 HTML을 포함할수 있으며 태그와 scrptlet은 동적 컨텐츠를 생성하는데 사용된다. JSP페이지는 최초로 호출할때 서블릿으로 컴파일되어 실행된다.
J2EE Connector아키텍처 있는 표준 아키텍처를 제공한다. 즉, 프로그래머에게 기본 정보 시스템에 접근할수 있는
Connector 아키텍처는 개발자들에게 J2EE와 다양한 EIS접근할수 API를 제공하는 것이다.
J2EE Connector 아키텍처는 엔터프라이즈 정보 시스템과 데이터를 주고 받게 된다. Connector API를 사용하여 엔터프라이즈 정보 시스템에 접근하기 위해서는 데이터베이스를 접근하기위한 JDBC와 유사하게 동작하는 resource adapter가 필요하다.
ㅇ자바 트랜잭션 서비스
JTS는 복잡한 분산 트랜잭션 처리를 위한 API를 제공하고commit과 rollback으로 고수준의 트랜잭션을 제어할수 있게한다. 이러한 트랜잭션 서비스는 여러 데이터베이스를 하나의 트랜잭션으로 관리할 수 있게 한다. 여러 트랜잭션 중에 하나라도 실패한다면 모든 트랜잭션이 rollback 되고 반대로 실패한 트랜잭션이 없으며 전체 트랜잭션이 commit 되게 한다.
ㅇ웹애플리케이션에서 서블릿의 역할
1. 적절한 요청 파라미터를 추출하여 데이터베이스 쿼리를 만든다.
2. 데이터베이스와 연결하고 데이터베이스로부터 결과를 받는다.
3. 마지막으로 클라이언트에 적하ㅏㅂ하게 결과를 보여준다.
- 이 책은 자바 언어와 자바 핵심 API에 익숙한 개발자들을 대상으로 한다.
ㅇ 이책에서 다루고 있는 내용
- 엔터프라이즈 환경에서 서블릿을 사용하기 적합한 곳과 사용법에 대한 전반적인 개념 설명으로 시작한다.
- 2,3장에서는 서블릿 API를 다룬다.
- 4장에서는 웹 애플리케이션의 구조와 웹 서버에 배치하는 방법을 알아본다 .
- 5-7장에서는 서블릿의 강력한 특징 중 일부분인 새션관리, 서블릿 영속성, 필터에 대해서 알아 볼것이다.
- 8장에서는 자바 서블릿을 보완하는 기술인 JSP에 대해서 알아 볼것이다.
- 9-11장에서는 실제 실행하는 환경에 웹 애플리케이션을 배치할 때 발생되는 문제들에 대해서 알아보게 된다. 디버깅 방법에 대해서 알아보고, 틀래스 로딩과 동기화를 고려하지 않았을때 발생될수 있는 문제점들을 알아볼것이다.
- 12,13장에서는 성능과 유지보수에 영향을 줄수 있는 효과적인 웹 애플리케이션 설계 방법에 대해서 알아본다. 좋은 애플리케이션을 만들기 위해 사용되는 여러가지 패턴들에 대해서 알아보고, 웹 애플리케이션의 성능과 확장성을 개선하기 위해 사용하는 테크닉과 도구들에 대해서 알아볼것이다.
- 마지막으로 14장에서는 웹서비스의 정보에 접근하는 에이전트로 서블릿을사용하는 방법에 대해서 알아볼것이다.
이책의 소스 코드를 다운로드 하는 방법
http://www.wrox.com/에 접속하여, 검색 기능을 이요하면 이책의 코드를 다운로드 할수 있다.
1, 엔터프라이즈 환경의 서블릿
자바는 분산 프렛폼에서 사용할수 있는 이미 검증된기술이다. 이책을 읽고 있는 독자들은 이미 J2SE에 익숙할거싱다. 이책에서 초점을 맞추어 진행 할 내용은 J2EE이다. 좀더 정확하게 말하자면, J2EE의 한 부분인 자바 서블릿 2.3API에 대해서 자세하게 다룰 것이다.
J2SE를 기반으로 한 J2EE는 엔터프라이즈 애플리케이션개발과 배치에 필요한 API와 서비스들을 제공한다. J2SE와 J2EE의 서비스와 라이브러리를 이용하면 플래폼 독립적인 웹 서기반 애플리케이션 개발을 쉽게 할수 있다. 그리고 J2EE 플렛폼에서는 J2EE애플리케이션이 설치되고 작동될 환경을 서버 벤더가 제공할수 있다.
- 분산 애플리케이션으로 앤터프라이즈 아키텍처를 구성하는 방법과 웹 애플리케이션이 포함되는 계층에 대해서 알아본다.
- J2EE아키텍처가 웹 컨테이너와 자바 서블릿을 이용하여 쉽게 웹 개발을 하는 방법과 서블릿 개발자들이 애플리케이션을 개발하면서 필요한 J2EE서비스와 라이브러리에 대해 알아본다.
- 서블릿 2.4 스펙을 이용하여 자바 서블릿으로 웹 애플리케이션을 개발할때 얻을수 잇는 장점에 대해서 알아본다.
- 컨테이너 제작 업체와 개발자가 서블릿 스펙을 구현할때 각자의 역할에 대해서 이야기 하며, 서블릿 스펙의 참조 구현 웹 컨테이너 / 서버인 톰캣을 소개한다.
- 이장의 마무리는 앤터프라이즈 애플리케이션에서 서블릿의 역할, 중요성, 적절함 등에 대해서 알아본다.
ㅇ 네트워크와 프로토콜
모든 시스템은 유선등의 물리적인 네트워크로 서로 연결된다. 이러한 네트워크는 컴퓨터 시스템과 그안에서 작동되는 소프트웨어들 사이에 커뮤니케이션을 위한 연결을 제공한다. 기본적인 네트워크 토폴로지들은 아래 내용과 같다.
- 스타 토폴로지 : 허브라고 불리는 중심점이 되는 컴퓨터에 연결시키는데 사용된다.
- 링 토폴로지 : 각각의 컴퓨터들이 막힌 루프형태로 서로 연결되어 있다.
- 공유된 하나의 통로를 이용하여 시스템 커뮤니케이션을 한다.
이 토폴로지들은 주로 LAN환경에서 사용된다. 이러한 토폴로지들은 가장 일반적인 구조이며, 서로 조합되거나 파생된 형태의 다른 토폴로지도 존재한다.
프로토콜이란 커뮤니케이션을 위한 규칙의 집합이다. 많은 프로토콜들이 공통 표준과 메시지 형식을 지정하여 개발되었기 때문에, 서로 다른 시스템간에 정보와 데이터를 교환할수 있다. 이러한 프로토콜은 특정 서비스를 제공하도록 설계되었으며, 실뢰성있는 네트워킹 서비스를 제공하기 위하여 계층으로 되어 있다.
물리적 단계에서는 하드웨어적인 물리적 연결이 통신하는 컴퓨터들 사이에 놓이게 된다. 그리고, 필수적으로 네트워크 카드와 유무선 연결이 포함된다. 이러한 연결은 컴퓨터간에 전달하는 메시지가 전달될 매체를 제공된다.
네트워크 레이어에서는 컴퓨터간의 커뮤니케이션을 수비게 해주는 이더넷과 같은 프로토콜을 구현하며, 데이터를 프레임이라는 단위로 나누어 네트워크로전송하는것을 다룬다. 또한 데이터 전송크기와 큰 메시지의 분할과 재조립 방법을 결정혐, 네트워크에 문제가 발생하였을때 처리할 방법도 결정하게 된다.
시스템에서 전송된 메시지들은 계층화된 프로토콜에 쌓여서 네트워크에 있는 다른 시스템으로 전송되며, 메시지를 받은 시스템에서는 반대로 메시지의 프로토콜을 제거한다. 논리적으로 각 레이어는 상대 컴퓨터의 동일한 레이어와 통신하게 된다.
TCP/IP
IP는 패킷의 크기를 결정하고 각 패킷이 목적지로 찾아가는 매커니즘을 정의하게 된다. 이 프로토콜은 연결된 컴퓨터의 IP주소를 이용하여 데이터가 네트워크를 통해 목적지로 찾아 갈수 있게 한다. 그리고 데이터의 유실이나 도착 순서가 바뀌는 등의 문제 ㅁ때문에 비교적 신뢰할수 없는 프로ㅗ콜이기도 하다. TCP는 연결성 통신으로 애플리케이션 레이어를 제공한다. 그리고 데이터의 모든 패킷을 받고 정확한 순서로 재조립하기 땜분에 IP와는 다르게 신뢰성이 있다.
HTTP
주로 애플리케이션 레이어의 통신방법으로 제공된다. 웹애플리케이션에서 가장 많이 사용되는 프로토콜은 HTTP이다. 웹 컨테이너와 J2EE 애플리케이션들은 사용자의 요청, 응답 프로토콜로 HTTP를 지원해야 한다. 웹의 가장 일반적인 최상위 프로토콜이기 때문에 HTTP를 사용하는 애플리케이션은 통신하려는 대부분의 서버들과 메시ㅣ지 교환이 가능하다.
HTTP는 송수신 요청을 정의된 형식으로 제공하며, 서로 다른 시스템과 언어로 개발된 애플리케이션들이 통신할수 있는 공통 언어의 역할을 하게 된다.
HTTP는 다른 프로토콜보다 많은 서버와 클라이언트가 사용하룻 이슨 웹의 표준언어이며, 대부분의 웹 서블릿 개발에 사용되는 궁극적인 프로토콜이다.
ㅇ계층화된 아키텍쳐
엔터프라이즈 애플리이케이션 개발 방식이 점점 3계층이상의 다계층 애플리케이션 모델로 많이 변화되고 있다. 애플리케이션을 논리적으로 서로 다른 여러 계층으로 분리 시키는것은 아래와 같은 장점이 있다.
- 관련된 규칙과 각 계층에 적합한 기능을 모듈로 캡슐화 할수 있으며, 쉬운 유지보수와 개발이 가능하다.
- 모듈화는 컴포넌트 기반 개발을 통하여 비즈니스, 프리젠테이션 등 로직의 유연성과 재사용성에 도움을 준다.
- 다른 계층간의 관계와 제공해야 할 서비스들을 미리 정의한다면, 각 개발자들이 자신이 갖고 있는 기술들을 특정 계층에만 초점을 맞추어 개발 할수 있다.
클라이언트 계층 : 데이터와 정보를 사용자에게 설명하거나 보여주는 계층이다.
서버와 중간계층 : 클라이언트가 요청한 데이터나 액션을 처리하여 응답한다. 여기서는 일반적으로 핵심 애플리케이션 로직이 존재하게 된다. 그러나 중간계층은 다시 두개의 계층으로 구분되게 된다.
비즈니스 계층 : 비즈니스 로직을 책임지는 계층이다. 애플리케이션 신뢰도를 위해 비즈니스규칙을 구현하는 것이 중요하다.
웹 계층(프리젠테이션 계층) : 비즈니스 데이터를 클라이언트에게 보여주기 위해서 재가공하는 계층이다. 클라리언트의 요청을 받아 해당되는 비즈니스 로직이 있는 비즈니스 계층으로 데이터를 포워드 한다.
ㅇ J2EE 플랫폼
자바는 스펙에 따라 표준화도니 많은 서비스와 API가 있기 때문에 개발자가 쉽게 이용할수 있다. 다시말해 표준에 맞는 서버에서 개발한다면, 다른 벤더의 서버에서도 별 다른 어려움 없이 개발된 애플리케이션을 배치 할수 있다는 의미이다.
J2EE 애플리케이션의 자바 기반 클라이언트는 씬 클라이언트의 구조를 이용한다. 씬 클라이언트란 서버와 통신하는 비교적 가벼운 클라이언트 애플리케이션을 의미한다.
ㅇ 웹 컨테이너
웹 애플리케이션을 위한 웹 컴포넌트인 서블릿과 JSP페이지의 실행을 관리하는 자바 실행환경이다. 그리고 웹 서바나 애플리케이션 서벙듸 일부분으로 요청과 응답을 만드는 네트워크 서비스를 제공한다. 웹 컨테이너는 반드시 HTTP를 지원해야 하며, 부가적으로 다른 종류의 프로토콜을 지원할수 있고, 웹 서버의 일부분으로 제작되거나 웹 서버의 플러그인 컴포넌트로 제작될수 도 있다. 웹 컨테이너는 서블릿과 JSP 인스턴스의 라이프 사이클과 실행을 관리한다.
ㅇ EJB 컨테이너
엔터프라이즈 자바빈즈는 비즈니스 규칙과 로직이 있는 비즈니스 컴포넌트이다. EJB에는 두가지 기본적인 종류가 있으며, 구중 하나는 데이터 자체와 강하게 결합되어 데이터 접근과 영속성 관리를 하는 엔티티빈이다. 다른 하나는 세션빈으로 로직을 표현하며, 클라이언트 요청을 처리하거나 데이터 처리 로직을 담당한다.
EJB 컴포넌트는 EJB컨테이너 안에서 실행된다. EJB컴포넌트는 재사용 가능하며 최적화를 위해 인스턴스가 풀링 되고 재활용되도록 설계하였다. EJB컨테이너는 애플리케이션을 위해서 EJB컴포넌트의 실행과 폴링을 관리할 책임이 있다.
ㅇ 자바 서블릿
서블릿은 동적으로 요청을 처리하고 응답을 생성하는 자바 클래스이다. 결국 요청에대해서 동적 HTML 페이지를 응답으로 생성한다는 뜻이다. 그러나, 애플릿이나 자바 애플리케이션에 직렬화된 자바 객체를 응답으로 생성한다는 뜻이다. 그러나, 애플릿이나 자바 애플리케이션에 직렬화된 자바 객체를 응답으로 보낼수 있으며, XML 같은 다른 형태로도 응답의 데이터를 보낼수 있다. 서블릿은 서블릿 컨테이너에서 동작하며 컨테이너가 제공하는 서비스에 접근할수 있다.
ㅇ서블릿 라이프 사이클
1. 컨테이너는 서블릿이 요청을 처리하기 전에 초기화 한다.
2. 서블릿 컴포넌트는 클라이언트 계층의 요청을 받는다. 컨테이너가 실제적으로 요청을 받아 적절한 컴포넌트의 인스턴스와 연결하고, 형식화된 요청과 응답 객체를 컴포넌트에 전달한다.
3. 서블릿은 비즈니스 계층의 로직의 도움을 받거나 직접 데이터베이스나 엔터프라이즈 인포메이션 계층에서 정보를 추출하여 요청을 처리한다.
4. 처리가 끝나면 클라이언트에게 응답을 리턴한다.
5. 최정적으로 컨테이너는 생성된 서블릿 인스턴스를 종료한다.
ㅇ 서블릿 통신
1. 요청/응답 사이클 중에 클라이언트와 하는 통신
2. 컨테이너 호나경에 관한 정보나 JNDI리소스에 접근하기 위해서 서블릿 테이너와 하는 통신
3. 다른 서블릿이나 EJB같은 서버의 다른 리소스와 하는 통신
4. 요청을 처리하기 위해서 데티어베이스나 레거시 시스템, EIS와 하는 통신
일반적으로는 서블릿의 역할은 클라이언트와의 통신이다. 컩테이너와의 통신은 클라이언트에게 리턴하기 위하여 데이터를 만드는 것과 달리 서비스를 제공하는 리소스에 접근한다. 실제로 유용하게 사용하기 위해서 스블릿은 다른 서버 컴포넌트나 데이터베이스 같은 외부 백엔드 리소스와도 통신한다.
ㅇ서블릿-클라이언트 통신
클라이언트와의 통신은 여러 형태로 할수 있짐나, 텍스트기반의 통신을 한다.
HTTP통신에서 일부 또는 모든 정보 파라미터는 요청의 일부분으로 전달된다. 서버의 응답으로 부터 클라이언트에 리턴할수 있는 데이터의 형식은 클라이언트에 따라서 다르다.
ㅇ서블릿의 이점
동적으로 생성되는 페이지가 필요하였고 CGI가 개발되어 이러한 역할을 수행하였다. CGI는 분리된 프로세스로 동작하는 CGI프로그램으로 요청을 넘겨 처리하게 되어 있다. 그러나, CGI 스크립트를 분리된 새로운 프로세스로 실행시키기 위해서는 처리시간이나 서버 리소스가 낭비되고 결국 확장성에 문제가 있게 되었다. 한번 실행된후에는 서버의 리소스나 정보에 접근할수 없다는 단점을 갖고 있다. 그리고 CGI 스크립트는 데이터베이스 커넥션 같은 리소스를 공유하거나 풀링 할수 없기 대문에 성능상의 문제가 있다.
이러한 CGI를 대체하기 위해여 서버 벤더들이 만든 기술이 있다.
CGI와 자바의 가장 분명한 차이는 프로세스 실행방식이다. CGI 스크립트는 개별적인 프로세스로 동작하는 데 비하여 자바 서블릿은 서버 프로세서ㅡ의 일부로 동작하기 때문에, 확실한 성능상의 이익이다. 그리고 서블릿 인스턴스는 각각의 호출 사이에 유지되기 때문에 매번 호출될 때마다 다시 생성할 필요가 없다. 또한 서블릿은 서블릿 컨테이너와 서블릿이 실행되는 실행 환경에 접근할수 잇다. 이것은 서블릿이 데이터베이스 같은 공유자원에 접근할수 있다는 뜻이다.
서블릿은 요청-응답 형식의 모든 CGI서비스를 제공하며, J2SE, API 서블릿 API 전체 J2EE API를 포함하여 여러가지 자바 라이브러리를 사용할수 있다. 그리고 외부 벤더가 제공하는 JDBC 드라이버나 XML 파서 같은 외부의 다른 API들도 사용할수 있으며, 이러한 라이브러리와 API는 플렛폼과 서버에 독립적으로 사용할수 있다.
ㅇ프로토콜의 유연성
- javax.servlet
- javax.servlet.http
ㅇJSP 컴포넌트
JSP 는 서블릿 기술을 웹 컨텐츠를 생성하는 일부분으로써 확장한 기술이다. JSP는 directive 태그, scriptlets로 불리는 일반 자바코드와 HTML을 포함할수 있으며 태그와 scrptlet은 동적 컨텐츠를 생성하는데 사용된다. JSP페이지는 최초로 호출할때 서블릿으로 컴파일되어 실행된다.
J2EE Connector아키텍처 있는 표준 아키텍처를 제공한다. 즉, 프로그래머에게 기본 정보 시스템에 접근할수 있는
Connector 아키텍처는 개발자들에게 J2EE와 다양한 EIS접근할수 API를 제공하는 것이다.
J2EE Connector 아키텍처는 엔터프라이즈 정보 시스템과 데이터를 주고 받게 된다. Connector API를 사용하여 엔터프라이즈 정보 시스템에 접근하기 위해서는 데이터베이스를 접근하기위한 JDBC와 유사하게 동작하는 resource adapter가 필요하다.
ㅇ자바 트랜잭션 서비스
JTS는 복잡한 분산 트랜잭션 처리를 위한 API를 제공하고commit과 rollback으로 고수준의 트랜잭션을 제어할수 있게한다. 이러한 트랜잭션 서비스는 여러 데이터베이스를 하나의 트랜잭션으로 관리할 수 있게 한다. 여러 트랜잭션 중에 하나라도 실패한다면 모든 트랜잭션이 rollback 되고 반대로 실패한 트랜잭션이 없으며 전체 트랜잭션이 commit 되게 한다.
ㅇ웹애플리케이션에서 서블릿의 역할
1. 적절한 요청 파라미터를 추출하여 데이터베이스 쿼리를 만든다.
2. 데이터베이스와 연결하고 데이터베이스로부터 결과를 받는다.
3. 마지막으로 클라이언트에 적하ㅏㅂ하게 결과를 보여준다.
'BOOK Study > J2EE' 카테고리의 다른 글
| 1. 서문 & 언터프라이즈 환경의 서블릿 (0) | 2010/01/25 |
|---|---|
| 세번째 자바 이야기 - Professional Java Sservlets 2.3 (0) | 2010/01/25 |
| 06. Java EE 6 - EJB 3.1 (0) | 2010/01/17 |
| 05. Java EE 6 - JPA 2.0 (0) | 2010/01/16 |
| 04. Java EE 6: DI (JSR 330) and CDI (JSR 299) (0) | 2010/01/14 |
| 02. Servlet 3.0 (0) | 2010/01/12 |
- 세번째 자바 이야기 - Professional Java Sservlets 2.3
- BOOK Study/J2EE
- 2010/01/25 21:12
C언어를 다 보고 나서 이젠 다음 것을 공부하기 위해 미루고 미루던 Servlet에 대해서 공부하기로 했다.
그래서 책을 고르다 고르다 보니. 옛날책을 고르게 되었다.
우리나라는 Servlet만을 다룬 책이 별로 없어 외국의 번역본을 보기로 했다.
원서를 샀지만. 빠르게 보고 다른것을 봐야 하는 일정때문에 이책을 고르기로 했다. 1,2 장을 보았는데 이책은 정말 쉽게 되어 있었다. Servlet에 기본적으로 쓰이는 문법들을 왜 써야 하는지에 대한 정보가 정말 마음에 들었으며, 요즘 JSP만을 배우는 학생들에게 기본을 배울수 있는 좋은 책이라는것을 알게 해주는 책이다.
이 책이 다루는 내용
|
목 차 |
서문 누구를 위한 책인가? 이 책에서 다루고 있는 내용 이 책을 읽기 위해 필요한 것들 표기 방법 고객지원 이 책의 소스 코드를 다운로드하는 방법 오탈자 P2P 온라인 포럼 제 1 장 엔터프라이즈 환경의 서블릿 엔터프라이즈 아키텍처 네트워크와 프로토콜 계층화된 아키텍처 J2EE 컨테이너 아키텍처 J2EE 컨테이너 종류 J2EE 웹 컴포넌트 자바 서블릿 JSP 컴포넌트 다른 J2EE API를 서블릿과 함께 사용하기 서블릿으로 정보 소스에 접근하기 J2EE의 메시징 서블릿 보안과 JAAS JNDI JAXP 웹 애플리케이션에서 서블릿의 역할 전형적인 서블릿 기반 애플리케이션 요약 제 2 장 서블릿 2.3 API javax.servlet 패키지 Servlet 인터페이스 서블릿의 라이프 사이클 서블릿의 정보 얻기 GenericServlet 클래스 라이프 사이클 메소드 서블릿 환경 메소드 유틸리티 메소드 기본 서블릿 만들기 Tomcat에서 서블릿 컴파일과 실행하기 요청응답 사이클 요청응답 인터페이스와 래퍼 클래스 ServletRequest 인터페이스 ServletResponse 인터페이스 입출력 스트림 서블릿컨테이너 커뮤니케이션 ServletConfig 인터페이스 ServletContext 인터페이스 ServletContext 라이프 사이클 클래스 부가적인 인터페이스 스레딩과 SingleThreadModel 인터페이스 RequestDispatcher 인터페이스 서블릿 익셉션 클래스 ServletException 클래스 UnavailableException 클래스 Personal Portal 웹 애플리케이션 Personal Portal 웹 애플리케이션 구현하기 애플리케이션 실행하기 요약 제 3 장 HTTP 서블릿 애플리케이션 레이어 프로토콜 HTTP HTTP 메소드 HTTP 헤더 HTTP 상태 코드 HTTP 인증 HTTP와 서블릿 HttpServlet 클래스 HTTP 요청과 응답 HTTP 서블릿 구현하기 HttpRequestResponseServlet 구현하기 QuizServlet 구현하기 서블릿과 커스텀 클라이언트 애플리케이션 설계하기 클라이언트 구현하기 Common 클래스 구현하기 애플리케이션 구현하기 요약 제 4 장 웹 애플리케이션 배치하기 웹 애플리케이션이란? 웹 애플리케이션의 구조 WAR ServletContext Tomcat에서 컨텍스트 정의하기 웹 애플리케이션의 라이프 사이클 디플로이먼트 디스크립터 디플로이먼트 디스크립터 예제 서블릿 정의와 매핑 서블릿 매핑 서블릿 컨텍스트 초기화 파라미터 에러 페이지 환영 페이지 파일 기반 보안 태그 순서 디플로이먼트 디스크립터의 유효성 검사 예제 웹 애플리케이션 배치하기 상점 시나리오 고급 배치 이슈 JAR 종속성 클래스 로딩 요약 제 5 장 세션 핸들링 상태 유지 없는 HTTP의 특징 클라이언트 구분과 상태 추적을 하는 이유 세션 관리 방법 URL 다시 쓰기를 이용한 세션 트래킹 쿠키를 사용하는 세션 트래킹 숨긴 폼 필드를 사용해서 세션 트래킹하기 서블릿 API를 사용하여 세션 관리하기 HttpSession 인터페이스 세션 관리 구현하기 세션 라이프 사이클 이벤트 감지하기 고급 세션 핸들링 요약 제 6 장 서블릿 영속성과 리소스 영속적인 리소스 데이터베이스 네이밍과 디렉토리 서비스 XML 서블릿 초기화와 환경설정 초기화 파라미터 서블릿 XML 환경설정 JDNI로 리소스 바인딩하기 JNDI 지원의 특징 표준 리소스 바인딩 데이터 소스 바인딩 내장 데이터 소스 바인딩 커스텀 데이터 소스 바인딩 영속적인 리소스 접근하기 DAO 패턴 인증 애플리케이션 프레임워크 JDBC를 사용해서 리소스 접근하기 LDAP을 사용해서 리소스 접근하기 서블릿 영속성 서블릿 상태 저장하기 세션 상태 저장하기 요약 제 7 장 필터 필터란 무엇인가? 새로운 기능 프로토타이핑하기 새로운 기능 추가하기 필터 이해하기 필터의 논리적 관점 필터의 물리적 관점 필터 설정하기 필터 정의하기 필터 매핑하기 필터 연결하기 필터 사용하기 필터 로그 XSLT 전환 필터 필터 연결하기 필터 설계하기 요약 제 8 장 JSP JSP 기본 JSP 스크립트 엘리먼트 선언문 스크립릿 표현식 JSP 내장 객체 디렉티브 page 디렉티브 include 디렉티브 JSP 액션 jsp:include 액션 jsp:forward 액션 jsp:param 액션 JSP 대출 계산기 JSP 페이지에서 자바빈즈 사용하기 서블릿과 JSP 함께 사용하기 데이터베이스 생성하기 시스템 아키텍처 아이템 목록 만들기 아이템 삭제하기 아이템 편집하기 아이템 수정하기 새로운 아이템 추가하기 애플리케이션 배치, 실행하기 요약 제 9 장 보안과 컨테이너 인증 서버측 자바 2 보안 모델 서버측 정책 파일 서버측 정책 파일 사용하기 SSL SSL 동작 모델 Tomcat 4에서 SSL 사용하기 서블릿 2.3 보안 보안 접근과 J2EE 비즈니스 로직 Tomcat 4의 보안 컨테이너 관리 보안 선언을 이용한 보안 사용하기 MemoryRealm 사용하기 다이제스트된 패스워드 사용하기 FORM 기반 인증 JDBCRealm 사용하기 다중 인증 요청 싱글 사인 온 프로그래밍을 이용한 보안 요약 제 10 장 서블릿 디버깅 방법 서블릿 디버깅 이슈 디버깅 방법 디버깅 툴 이벤트 중심 디버깅 필터로 디버깅하기 디버깅 필터 구현하기 디버깅 필터 사용하기 이벤트 리스너로 디버깅하기 디버깅 리스너 구현하기 디버깅 리스너 사용하기 JPDA로 디버깅하기 JDPA 디버거 구현하기 디버그 모드로 서버 실행하기 JPDA 디버거 사용하기 JPDA 디버거 출력 디버깅 결과 시각화하기 디버깅 결과 시각화 예제 디버깅 방법 선택하기 J2SE 1.4의 발전된 로그 기술 실시간 UML 역공학 요약 제 11 장 클래스 로딩과 동기화 클래스 로딩 서블릿 컨테이너의 클래스 로딩 배치 구조 클래스와 다른 리소스의 위치 Tomcat 4의 클래스 로딩 우선순위 클래스 로딩이 애플리케이션에 주는 영향 사용자 추적 애플리케이션 서블릿 로딩과 리로딩 스레드와 동기화 뱅킹 애플리케이션 단일 스레드 서블릿 사용하기 서블릿 풀링 다중 스레드 서블릿 세션과 컨텍스트 변수를 사용하는 서블릿 요약 제 12 장 웹 애플리케이션 설계와 서블릿 패턴 좋은 애플리케이션 설계의 중요성 유지보수성 재사용성 확장성 J2EE 웹 애플리케이션 설계 모델 1 아키텍처 소개 모델 2 아키텍처 소개 디자인 원칙 문서화 디자인 패턴 사용하기 J2EE 패턴 패턴을 사용하는 이유 웹 기반 토론 포럼 만들기 비즈니스 도메인 내의 엔티티 토론 포럼의 클래스 모델 모델 1 아키텍처를 사용하여 포럼 구축하기 토론 주제 보기 로그인 페이지 로그인 처리 응답 보기 새로 응답 추가하기 신규 응답 처리하기 기존 응답 삭제하기 애플리케이션의 페이지 흐름 애플리케이션 리팩토링 모델 2 아키텍처를 사용하여 포럼 구축하기 Front Controller 패턴 응답 보기 로그인 처리 새로 응답 추가하기 신규 응답 처리하기 기존 응답 삭제하기 Intercepting Filter 패턴 사용하기 View Helper 패턴 Service to Worker 패턴 사용하기 요약 제 13 장 성능과 확장성 좋은 코딩 방법 아키텍처 고려사항 비즈니스 로직 핸들링 데이터 접근하기 데이터 캐시하기 세션 관리 비동기 커뮤니케이션 사용하기 로드 밸런싱과 클러스터링 분석 툴 스트레스 테스트 툴 프로파일링 툴 커스텀 성능 모니터링 툴 모니터 프레임워크 클래스 예제 사용하기 요약 제 14 장 웹 서비스와 서블릿 에이전트 웹 서비스 웹 서비스 동작 방식 SOAP 웹 서비스 사용하기 SOAP 요청 SOAP 응답 에러 응답 Apache SOAP 웹 서비스 배치하기 Apache Axis 서블릿 에이전트 정보 수집 SOAP 서비스 사용하기 정보 캐시하기 집합과 복합 집합 예제 샘플링 애플리케이션 디자인 고려사항 현재와 미래의 도전자들 WSDL UDDI 웹 서비스 스택 트랜잭션과 웹 서비스 ACID XAML과 XLANG 요약 부록 A 톰캣 4.0 설치하기 Tomcat 4.0 설치하기 용어 정리 기본 Tomcat 설치 Tomcat 실행하기 Tomcat 4.0 디렉토리 구조 Tomcat 4.0 환경설정 도움 얻기 부록 B HTTP 레퍼런스 HTTP 버전 HTTP 트랜잭션 HTTP 클라이언트 요청 HTTP 서버 응답 HTTP 헤더 MIME 타입 상태 코드 추가 정보 부록 C 서블릿 2.3 API 레퍼런스 javax.servlet javax.servlet 인터페이스 javax.servlet 클래스 javax.servlet 익셉션 javax.servlet.http javax.servlet.http 인터페이스 javax.servlet.http 클래스 찾아보기 |
'BOOK Study > J2EE' 카테고리의 다른 글
| 1. 서문 & 언터프라이즈 환경의 서블릿 (0) | 2010/01/25 |
|---|---|
| 세번째 자바 이야기 - Professional Java Sservlets 2.3 (0) | 2010/01/25 |
| 06. Java EE 6 - EJB 3.1 (0) | 2010/01/17 |
| 05. Java EE 6 - JPA 2.0 (0) | 2010/01/16 |
| 04. Java EE 6: DI (JSR 330) and CDI (JSR 299) (0) | 2010/01/14 |
| 02. Servlet 3.0 (0) | 2010/01/12 |
- 06. Java EE 6 - EJB 3.1
- BOOK Study/J2EE
- 2010/01/17 21:29
Lab Exercises
For the sake of the simplicity of the lab, most exercises are provided in the form of "ready-to-open-and-run" NetBeans projects. (Many of them are borrowed from "glassfish-samples" and "Java EE 6 tutorial".) Please feel free to create them from scratch if you want to.
It is strongly encouraged, leveraging what is provided in this lab, you do your own experimentation meaning creating/adding your own code as much as you can.
If you have written some code that might help everyone else, please feel free to share them on this codecamp email alias or directly send them to the instructors. Your name will be recognized in this lab if your sample code is chosen to be included. For the tasks that need to be done, please see the "Things to be done" section above.)
It is strongly encouraged, leveraging what is provided in this lab, you do your own experimentation meaning creating/adding your own code as much as you can.
If you have written some code that might help everyone else, please feel free to share them on this codecamp email alias or directly send them to the instructors. Your name will be recognized in this lab if your sample code is chosen to be included. For the tasks that need to be done, please see the "Things to be done" section above.)
Before you start this lab, you have to get sample applications from "glassfish-samples" and "Java EE tutorial" as described in LAB-4530: Java EE 6 - Examples.Exercise 1: EJB in a war packaging (step by step)
더보기
Exercise 2: Singleton
더보기
Exercise 4: Asynchronous method invocation using @Asynchronous
더보기
Exercise 5: EJB Embedded (Building Embeddable EJB app step by step)
더보기
Exercise 6: EJB and RESTful service
더보기
Homework Exercise
1. The homework #1 is to modify EJB-in-a-war project you did in Exercise 1 above as following. (You might want to create a new project by copying my_ejb3.1 project. You can name the newly copied project in any way you want. Here it is referred to as my_ejb3.1.)
- Exercise point: EJB in a war packaging
- Add another stateless bean called YourSessionBean with the following two methods.
- add(int x, int y)
- multiply(int x, int y)
- From the HelloServlet, call these two methods using x value 10 and y value 6 and display the result
- Add another stateless bean called YourSessionBean with the following two methods.
- Exercise point: Singleton
- Create a Singleton EJB which has the following two variables, which are used as a total values of the addition and multiplication
- int total_addition
- int total_multiplication
- Create a Singleton EJB which has the following two variables, which are used as a total values of the addition and multiplication
- Exercise point: Timer
- Use timer to display the value of total_addition and total_multiplication every hour of the day at the GlassFish v3 server log. (Basically use System.out.println(..) method.)
- Use timer to display the value of total_addition and total_multiplication every hour of the day at the GlassFish v3 server log. (Basically use System.out.println(..) method.)
- Exercise point: EJB embedded
- Create Java SE application in which the add(..) and multiply(..) methods are tested
- Create Java SE application in which the add(..) and multiply(..) methods are tested
- Zip file of the the my_ejb3.1 and my_ejb3.1_embedded NetBeans projects. (Someone else should be able to open and runthem as NetBeans projects.) You can use your favorite zip utility or you can use "jar" utility that comes with JDK as following.
- cd <parent directory that contains my_ejb3.1 directory> (assuming you named your project as my_ejb3.1)
- jar cvf my_ejb3.1.zip my_ejb3.1 (my_ejb3.1 should contain nbproject directory)
- cd <parent directory that contains my_ejb3.1 directory> (assuming you named your project as my_ejb3.1)
Please reduce the size of the zip file by right clicking the project and then selecting Clean before zipping the file.
- Captured output screen - name it as homework_javaee6_ejb3.1.gif or homework_javaee6_ejb3.1_embedded.jpg (or homework_javaee6_ejb3.1.<whatever graphics format>) and as homework_javaee6_ejb3.1_embedded.gif or homework_javaee6_ejb3.1_embedded.jpg (or homework_javaee6_ejb3.1_embedded.<whatever graphics format>)
- Any screen capture that shows that your program is working is good enough.
'BOOK Study > J2EE' 카테고리의 다른 글
| 1. 서문 & 언터프라이즈 환경의 서블릿 (0) | 2010/01/25 |
|---|---|
| 세번째 자바 이야기 - Professional Java Sservlets 2.3 (0) | 2010/01/25 |
| 06. Java EE 6 - EJB 3.1 (0) | 2010/01/17 |
| 05. Java EE 6 - JPA 2.0 (0) | 2010/01/16 |
| 04. Java EE 6: DI (JSR 330) and CDI (JSR 299) (0) | 2010/01/14 |
| 02. Servlet 3.0 (0) | 2010/01/12 |
























































































4534_javaee6_ejb3.1.zip
Session4EJB31.pdf


Recent comment