EJB Transaction & Exception

Size: px
Start display at page:

Download "EJB Transaction & Exception"

Transcription

1 Enterprise JavaBeans 3.0 Java EE 5.0 Business Tier Component Technology 김병곤

2 Enterprise JavaBeans 3.0 Java EE 의핵심비즈니스컴포넌트구현기술 기존의 EJB 2.x 는 Heavy 한 Object 로 EJB 가구현 EJB 3.0 은 POJO(Plain Old Java Object) 기반으로 lightweight 하게구현 Java SE 5 을기반으로하여손쉽고빠르게개발이가능해짐 배포및모든과정이아무간결하고편리함 AOP 의일부분기능은 Interceptor 가추가됨 2

3 Contents Enterprise JavaBeans 3.0 Overview Session Bean Entity Bean( 생략 ) Message-Driven Bean과 Java Message Service Interceptor Transaction & Exception Timer Service WebService 3

4 Enterprise JavaBeans 3.0 관련도서 해외원서 Pro EJB 3 Java Persistence API, Apress Beginning EJB 3 Application Development, Apress EJB 3 In Action, Manning Enterprise JavaBeans th, Oreilly Mastering Enterprise JavaBeans 4 th, Wiley 국내 Enterprise JavaBeans, 가메출판사, 김병곤

5 도서소개 Enterprise JavaBeans 3.0 출판사 : 가메출판사 저자 : 김병곤 쪽수 : 548 발간일 : 특징 국내최초 EJB 3.0 도서 개념위주설명도서 JBoss 기반 JDK 5 에대한기본설명포함 EJB JPA 에대한상세한설명으로 ORM 기반자바애플리케이션을구현하는독자에게유용 5

6 EJB 3.0 Overview Java EE 5.0 Business Tier Component Technology 김병곤

7 Java EE 5 의개요 J2SE 는분명히스탠드얼론애플리케이션을개발하는데좋은환 경을제공하였지만미션크리티컬한비즈니스애플리케이션을구현하기에는너무나부족한것이많았다 (1995년) J2EE 는 (1998 년 ) 가장견고하고정교한분산엔터프라이즈애플리케이션의모델 대규모이면서 확장가능하고 보안기능이필요한애플리케이션을개발하는데필수적인기술 7

8 분산 n-tier 아키텍처 2-Tier 아키텍처 3-Tier 아키텍처 8

9 분산 n-tier 아키텍처 J2EE 로구현한 n-tier 아키텍처 Client Tier Presentation Tier Business Tier Integration Tier Resource Tier 웹브라우저 웹서버 웹컨테이너 EJB 컨테이너 웹브라우저 자바애플릿 HTML 동영상 플래쉬이미지 JSPs Servlet EJB EJB EJB EJB Legacy System 애플리케이션 JNDI EJB 데이터베이스 9

10 Java EE 5 의구조 10

11 n-tier 구조의문제점 n-tier로전체애플리케이션을모듈화시켜서분산시키면분명히이득을보는것은사실이나이렇게모듈화함으로써발생하는문제도있다. 분산된애플리케이션을통합하는데많은노력이필요하다. 분산된시스템의리소스관리가어렵다. 분산된애플리케이션의변경이발생할때의존적인시스템이영향을받는다. 분산된애플리케이션은디버깅이매우어렵다. 분산된시스템의장애발생시원인규명이어렵다. 오늘날거의대부분의유지보수비용은바로위와같은문제를해결하는데집중되어있다. 11

12 애플리케이션컴포넌트 애플리케이션클라이언트 ( 스탠스얼론자바클라이언트 ) 애플릿 ( 웹브라우저에서실행하는자바코드 ) 웹컴포넌트 (JSP, Servlet, JSF) Presentation Tier 에서구동하며요청및화면을처리 서버컴포넌트 (Enterprise JavaBeans) 비즈니스로직을처리하기위한핵심분산컴포넌트기술 Business Tier에서동작 종류 Session Bean Stateless Session Bean Stateful Session Bean Entity Bean Message-Driven Bean 12

13 Java EE 5 의구성요소와버전 JSP(Java Server Pages) 2.1 Servlet 2.5 JSF(Java Server Faces) 1.2 JSTL 1.2 Java Mail 1.4 Java Message Service(JMS) 1.1 Java Persistence 1.0 Web Service 1.2 JAXP Enterprise JavaBeans 3.0 JTA 1.1 JNDI Connector 1.5 JDBC

14 왜 Enterprise JavaBeans 를사용하는가? Enterprise JavaBeans 는 J2EE 플랫폼에속하는표준이다. Enterprise JavaBeans 는트랜잭션을지원한다. Enterprise JavaBeans 는보안을지원한다. Enterprise JavaBeans 는재사용가능한컴포넌트다. 14

15 EJB 컨테이너의기능 트랜잭션관리 분산트랜잭션을지원하여하나이상의 EJB, DB, Legacy 를단일트랜잭션으로처리 인증과접근제어 메소드호출에대해서 Authentication 과 Authorization 을지원 EJB 인스턴스풀링 빈의인스턴스를풀링하여많은사용자에대한요청을처리 세션관리 Stateful Session Bean 을통한사용자의정보를유지 지속성메커니즘 Java Persistence API 를이용하여 Entity Bean 을구현 (ORM) 데이터베이스커넥션풀링 15

16 Enterprise JavaBeans 의종류 J2EE Server( 웹애플리케이션서버 ) JNDI Naming Service 웹서비스 Connector Web Container 리소스검색 호출 EJB Container 세션빈 원격호출 외부서버 요청 JSPs 세션빈 사용 데이터베이스처리 클라이언트 웹서버 Servlet Servlet 호출 메일송신 메시지송신 메시지드리븐빈 엔티티빈 데이터베이스처리 데이터베이스처리 데이터베이스 Java Mail Java Message Service 메시지송신 16

17 Enterprise JavaBeans 의종류 Session Bean Stateless Session Bean 클라이언트의정보를유지하지않는빈. 인스턴스풀을사용. Stateful Session Bean 클라이언트의정보를유지하는빈. 인스턴스캐쉬를사용. 클라이언트당하나씩생성됨 Entity Bean 데이터베이스테이블과객체를매핑하는 Object-Relational Mapping(ORM) 빈 완전한 POJO 기반 Message-Driven Bean 비동기메시지를수신하여처리하는빈 17

18 Enterprise Beans 의비즈니스인터페이스 엔터프라이즈빈즈는비즈니스인터페이스를통해비즈니스로직을정의한다. 호출위치에따라로컬 / 리모트인터페이스로구분한다. 18

19 EJB 3.0 의특징 - 로컬과리모트호출 19

20 EJB 3.0 의특징 인스턴스풀링 EJB 에서는인스턴스풀링을통하여많은사용자의요청을동시 에처리한다. 20

21 EJB 3.0 의특징 - 콜백메소드 EJB 3.0 에서 Stateless Session Bean 의생명주기 존재하지않는상태 1. newinstance() 2. Dependency Injection 콜백 비즈니스메소드 타임아웃콜백 21

22 EJB 3.0 의특징 - 콜백메소드 EJB 컨테이너는빈의생명주기를관리하기위해서적절한시점 에콜백메소드를호출한다. 콜백메소드종류 빈인스턴스가생성된직후에컨테이너가호출하는콜백메소드 빈인스턴스가 passivate 되어 2 차저장소에저장되기전에호출하는콜백메소드 Passivate 된빈인스턴스가 activate 된후에호출하는콜백메소드 EJB 2.x 에서는무조건콜백메소드를사용하도록정의했지만 EJB 3.0 에서는필요한경우에만사용할수있다. 22

23 EJB 3.0 의특징 - 콜백메소드 public class ShoppingCartBean implements ShoppingCart {... public void dopostconstruct() { System.out.println(" public void dopredestroy() { System.out.println(" 장바구니를삭제합니다."); // 여기에서주로사용하던자원을해제한다.... 생략 23

24 EJB 3.0 의특징 - 트랜잭션처리 EJB 컨테이너는다양한빈과다양한리소스에대한처리를단일 트랜잭션으로처리하게한다. 24

25 EJB 3.0 의특징 - Interceptor EJB 3.0에서는메소드의호출을가로채어처리하는 Interceptor public class InterceptorHelloBean implements InterceptorHello { public void sayhello() { System.out.println("Hello EJB public Object myinterceptor(invocationcontext ctx) throws Exception { System.out.println("Interceptor가호출되었습니다."); // 계속 HelloWorldBean의비즈니스메소드를실행합니다. return ctx.proceed(); Spring Framework의 AOP(Aspect-Oriented Programming) 을기억하지는지. 25

26 EJB 3.0 의특징 - 타이머서비스 EJB 2.1 에서추가된타이머서비스는 EJB 에서스케줄러기능을 public class SimpleTimer implements SimpleTimerRemote private javax.ejb.timerservice timer; // Dependency Injection public void calltimer(long milliseconds) { timer.createtimer(new Date(new Date().getTime() + milliseconds), "Hello World");... 생략 26

27 EJB 3.0 의변화 - 홈인터페이스는더이상없다. EJB 2.x 에서는 EJB 빈의인스턴스를생성하는 Home Interface 가존재 EJB 3.0 에서는홈인터페이스는더이상없다. 27

28 EJB 3.0 의변화 - 홈인터페이스는더이상없다. EJB 2.x 의홈인터페이스 빈의인스턴스를생성 public interface HelloHome extends EJBHome { public HelloObject create() throws RemoteException, CreateException; EJB 2.x 의리모트 ( 컴포넌트 ) 인터페이스 비즈니스로직정의 public interface HelloObject extends EJBObject { public String sayhello() throws RemoteException; 28

29 EJB 3.0 의변화 - 홈인터페이스는더이상없다. EJB 2.x 에서빈을정의 브즈니스인터페이스의구현 public class HelloBean implements HelloObject { private SessionContext sessioncontext; public void ejbcreate() { public void ejbremove() { public void ejbactivate() { public void ejbpassivate() { public void setsessioncontext(sessioncontext sessioncontext) { this.sessioncontext = sessioncontext; public String sayhello() throws java.rmi.remoteexception { return "Hello EJB World"; EJB 호출클라이언트 Context ctx = new InitialContext(); Object obj = ctx.lookup("hello"); HelloHome ejbhome = (HelloHome) PortableRemoteObject.narrow(obj, HelloHome.class); // 홈인터페이스 HelloObject ejbobject = ejbhome.create(); // 리모트인터페이스 String message = ejbobject.sayhello(); System.out.println( message ); 29

30 EJB 3.0 의변화 - 홈인터페이스는더이상없다. EJB 3.x 는 POJO public interface HelloObject { public String sayhello(); public class HelloBean implements HelloObject { public String sayhello() { return "Hello EJB World"; EJB 호출클라이언트 Context ctx = new InitialContext(); HelloObject ejbobject = (HelloObject) ctx.lookup("hello"); String message = ejbobject.sayhello(); System.out.println( message ); 30

31 EJB 3.0 의변화 비즈니스인터페이스의출현 EJB 3.0에서는컴포넌트인터페이스대신비즈니스인터페이스가새로정의됨 EJB 2.x 의리모트 ( 컴포넌트 ) 인터페이스 public interface HelloObject extends EJBObject { // EJB 2.x 방식 public String sayhello() throws RemoteException; EJB 3.0 의리모트 ( 비즈니스 ) public interface HelloObject { // EJB 3.0 방식 public String sayhello(); 31

32 EJB 3.0 의변화 Java SE 5 Annotation 의활용 EJB 3.0에서는기존에작성하던배포디스크립터 XML 파일을작성하지않고 Java SE @TransactionManagement(TransactionManagementType.CONTAINER) public class PostingBean implements Posting {... 생략 public void something(){... 생략 ** 참고 : 배포디스크립터를작성해도상관은없음. 32

33 EJB 3.0 의변화 Dependency Injection Dependency Injection 을이용한필요자원의참조를컨테이너 의역할로변환 33

34 EJB 3.0 의변화 Dependency Injection EJB 2.x 에서는관련된자원을참조하기위해서는 JNDI Lookup public class EnterpriseBeanA implements EnterpriseA { EnterpriseB b; public void callenterprisebeanb() { Context ctx = new InitialContext(); b = (EnterpriseB) ctx.lookup("enterprisebeana/local"); public class EnterpriseBeanB implements EnterpriseB { DataSource ds; public void something() { Context ctx = new InitialContext(); ds = (DataSource) ctx.lookup("java:oracleds"); Connection con = ds.getconnection(); // JDBC 커넥션획득 // JDBC 처리... 34

35 EJB 3.0 의변화 Dependency Injection EJB 3.0에서는 Dependency Injection을활용해서참조하는자원을 public class EnterpriseBeanA implements EnterpriseA EnterpriseB b; // Dependency Injection public void callenterprisebeanb() { public class EnterpriseBeanB implements EnterpriseB DataSource ds; public void something() { Connection con = ds.getconnection(); // JDBC 커넥션획득 // JDBC 처리... 35

36 EJB 3.0 의변화 POJO public class CalculatorBean implements Calculator { public int add(int a, int b) { return a + b; public int sub(int a, int b) { return a - b; public int mul(int a, int b) { return a * b; public int div(int a, int b) throws DivisionByZeroException { System.out.println("b == " + b); if (b == 0) { throw new DivisionByZeroException("0으로나눌수없습니다 "); return a / b; 36

37 EJB 3.0 의변화 = "PERSON") public class Person implements Serializable { public static enum Gender { MALE, FEMALE ; private String name; protected = "NAME") public String getname() { return name; public void setname(string name) { this.name = name; 37

38 EJB 3.0 의변화 새로운 Java Persistence API Entity Bean 을 Hibernate public class Subject implements Serializable { private int subject_id; // Subject ID private String name; // Subject Name private Subject parent; // 부모 Subject public Subject() public int getsubject_id() { = "parent_id") public Subject getparent() { return parent;... 생략 CREATE TABLE SUBJECT( SUBJECT_ID NUMBER NOT NULL, PARENT_ID NUMBER, NAME VARCHAR2(32) NOT NULL, CONSTRAINT P PRIMARY KEY (SUBJECT_ID) ); ALTER TABLE SUBJECT ADD CONSTRAINT P FOREIGN KEY (PARENT_ID) REFERENCES SUBJECT(SUBJECT_ID); 38

39 Summary EJB 3.0 은 Java SE 5 의새로운기능을적극적으로활용 기존의 EJB 에비해서가볍고, 쉽고빠르게개발할수있도록전체를재정의 POJO 기반으로매우간결하고쉽게 Enterprise Bean Component 를정의 Dependency Injection 을이용한의존성정보의자동주입 Domain Model 을 POJO 기반으로 DB 와 mapping 하는새로운개념의 Entity Bean 39

40 Q & A Q & A 40

41 EJB 3.0 Session Bean Java EE 5.0 Business Tier Component Technology 김병곤

42 Session Bean Enterprise JavaBeans 를구성하고있는 Enterprise Bean 의하 나 비즈니스로직을처리하는핵심빈 EJB 프로젝트에서전체의 90% 이상을구성하고있는빈 상태유지여부에따라서다음과같이구분 Stateless Session Bean Stateful Session Bean 42

43 Session Bean Session Bean 은비즈니스로직을수행하는핵심 Enterprise Bean 이며동시에 Façade 로써동작한다. EJB Container 호출 세션빈 원격호출 웹서비스 호출 세션빈 사용 데이터베이스처리 클라이언트 메일송신 메시지송신 메시지드리븐빈 엔티티빈 데이터베이스처리 데이터베이스처리 데이터베이스 Java Mail 메시지송신 JMS Queue 43

44 Session Bean 의 Business Interface 실제비즈니스로직이정의되어있는단순인터페이스 원격호출여부에따라서다음과같이구분됨 Local Interface 동일 JVM, 동일컨테이너상에서호출할때 Remote Interface 서로다른 JVM 에서호출할때 EJB 2.x 에서는 Component Interface(Remote Interface + Local Interface) 라고불렀음 44

45 Session Bean 의 Business Interface 클라이언트는비즈니스인터페이스를호출하여로직을수행 클라이언트 호출 비즈니스인터페이스 세션빈 빈구현코드 가장단순한인터페이스로구현 public interface Calculator { int add(int a, int b); int sub(int a, int b); int mul(int a, int b); int div(int a, int b); 45

46 Remote Interface 와 Local Interface 원격호출시 Session Bean 은 Remote Interface 를가진다. 동일 JVM 에서호출시 Session Bean 은 Local Interface 를가진 다. 클라이언트 원격호출 리모트인터페이스 세션빈 빈구현코드 로컬호출 로컬인터페이스 세션빈 빈구현코드 46

47 Remote Interface 와 Local Interface 47

48 Business Interface 의제약사항 하나의 Session Bean 은 Remote Interface 와 Local Interface 를모두가질수있다. Remote Interface(Call By Value) 는 RMI 방식으로처리하므로 fine-grained 호출을수행하는경우성능에좋지못한영향을미 친다. 동일 JVM 에서 Remote Interface 를하나이상의 Session Bean 이호출하는경우벤더에서제공하는기능에따라서로컬호출 (Call By Reference) 을수행한다. 48

49 Remote Interface 의정의 Remote Interface annotation public interface CalculatorRemote { int add(int a, int b); int sub(int a, int b); int mul(int a, int b); int div(int a, int b); Local Interface annotation public interface CalculatorLocal { int add(int a, int b); int sub(int a, int b); int mul(int a, int b); int div(int a, int b); 49

50 Session Bean 구현클래스 Session Bean 의구현클래스는 POJO public class CalculatorBean implements CalculatorRemote { public int add(int a, int b) {... 생략 public int sub(int a, int b) {... 생략 public int mul(int a, int b) {... 생략 public int div(int a, int b) {... 생략 50

51 Session Bean 구현클래스 Business annotation을사용하지않고 public class CalculatorBean implements CalculatorRemote { public int add(int a, int b) {... 생략 public int sub(int a, int b) {... 생략 public int mul(int a, int b) {... 생략 public int div(int a, int b) {... 생략 51

52 Remote/Local Interface 를모두가진 Session Bean Session Bean 은 Remote/Local Interface 를모두가질수있다. 일반적으로둘중에하나만구현하는경우가많음. 52

53 Remote/Local Interface 를모두가진 Session Bean Session Bean 정의시 annotation @Remote(CalculatorRemote.class) public class CalculatorBean implements CalculatorRemote { public int add(int a, int b) {... 생략 public int sub(int a, int b) {... 생략 public int mul(int a, int b) {... 생략 public int div(int a, int b) {... 생략 53

54 Stateless Session Bean 이란? Session Bean의한종류 모든클라이언트에대해서동일하게처리됨 특정클라이언트의상태를유지하지않음 Session Bean 95% 이상차지 실제비즈니스로직을구현하는데사용 EJB Instance Pool을이용함 메소드호출시 JTA/Local Transaction이수행되며메소드호출이완료되면 Transaction이 commit됨 메소드호출시시스템수준의예외가발생하는 Transaction은 rollback됨 54

55 Stateless Session Bean 의인스턴스는모두동일하다 Stateless Session Bean 은 EJB Container 가 EJB Instance Pool 을이용하여사용하므로상태를유지할수없고모든클라이언트에대해서동일하게처리됨 클라이언트 A 호출 호출 1 인스턴스풀 C 빈의인스턴스 호출 클라이언트 B A 빈의인스턴스 B 빈의인스턴스 55

56 EJB Instance Pool EJB Container 는컨테이너가구동할때 Stateless Session Bean 의인스턴스를생성하여 EJB Instance Pool 에넣고풀링한다. 클라이언트 A 와 B 가 A 라는빈을호출할때 EJB Container 는서 로다른인스턴스를호출하게해주므로상태유지가원천적으로 불가능 클라이언트 A 호출 호출 1 호출 2 5 EJB Container 3 4 인스턴스풀 C 빈의인스턴스 클라이언트 B A 빈의인스턴스 B 빈의인스턴스 56

57 Stateless Session Bean 의 Life Cycle Stateless Session Bean 은매우단순한생명주기를가짐 존재하지않는상태 1. newinstance() 2. Dependency Injection 콜백 비즈니스메소드 Method-Ready Pool 타임아웃콜백 57

58 Life Cycle 과 Callback EJB Container 는 Session Bean 의인스턴스의생명주기를제어 할때적절한시점에서 Callback 메소드를호출한다. Callback public class MyStatelessBean implements MyStateless { private Connection conn; public MyStatelessBean() { // public void dopostconstruct() { Context ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("mydatasource"); conn = ds.getconnection(); // 콜백메소드에서 JDBC 커넥션을얻는다.... 생략 58

59 Stateless Session Bean 의 Callback Stateless Session Bean 은두개의 Callback 빈이파괴되기직전에컨테이너가호출 존재하지않는상태 1. newinstance() 2. Dependency Injection 콜백 비즈니스메소드 Method-Ready Pool 타임아웃콜백 59

60 다른 EJB 빈을참조 하나의빈이다른빈을참조할때기존의EJB 2.x에서는 public class SessionFacadeBean implements SessionFacade { OrderFacade orderfacade; public void callorderfacade() { try { Context ctx = new InitialContext(); // JDNI를통해 lookup을한다. facade = (OrderFacade) ctx.lookup("orderfacadebean/local"); orderfacade.methodsomething(); // OrderFacade 무상태세션빈을호출 catch (Exception e) { // 예외처리를한다.... 생략 60

61 @EJB annotation 을이용한 EJB 빈참조 EJB 3.x annotation public class SessionFacadeBean implements SessionFacade OrderFacade orderfacade; // Dependency Injection public void callorderfacade() { orderfacade.methodsomething(); // OrderFacade 무상태세션빈을호출... 생략 EJB Container 클라이언트 원격호출 리모트인터페이스 SessionFacade 로컬호출 무상태세션빈 를이용한레퍼런스참조 OrderFacade 무상태세션빈 TORDER 테이블 61

62 외부리소스를참조하는빈 외부리소스 ( 예 ; 데이터베이스 ) 를참조하려면기존의 EJB 2.x 에서 는 JNDI 를이용해야했지만 EJB 3.0 annotation 을사용한다. EJB Container 클라이언트 원격호출 리모트인터페이스 SessionFacade 를이용한레퍼런스참조 TORDER 로컬호출 로컬인터페이스 OrderFacade 무상태세션빈 처리 를이용한레퍼런스참조 DataSource 62

63 annotation 을이용하여 JNDI 명을기술하면 EJB Container 가 DataSource public class OrderFacadeBean implements OrderFacade = "java:oracleds") // dependency injection DataSource ds; public OrderPk insert(order dto) throws DAOException { Connection conn = null; PreparedStatement stmt = null; try { conn = ds.getconnection(); stmt = conn.preparestatement(sql_insert);... 생략 return dto.createpk(); catch (Exception e) { throw new DAOException(" 새로운 Order를추가할수없습니다.", e); finally {... 생략... 생략 63

64 Stateful Session Bean 이란? Session Bean의한종류 특정클라이언트의상태를유지함 실제업무에서거의사용하지않음 대부분의웹애플리케이션에서는특정사용자의정보를유지하는경우 HttpSession을사용함 실제비즈니스로직을구현하는데사용 EJB Instance Cache를이용함 하나의트랜잭션이여러메소드를통해전파되어처리가가능 Stateless Session Bean보다복잡한 Life Cycle을가짐 트랜잭션이롤백되는경우상태를이전으로복구시키는 Callback 메소드를제공 64

65 EJB Instance Cache Stateful Session Bean 은클라이언트가요청할때빈의인스턴 스를생성하며생성한빈인스턴스는 EJB Instance Cache 에보 관 65

66 특정클라이언트에만사용하는빈인스턴스 Stateful Session Bean 은특정한클라이언트가요청을하는순간생성됨 (Stateless Session Bean 은 EJB 컨테이너가가동될때빈인스턴스가복수개만들어져서풀링됨 ) 따라서특정클라이언트가요청한빈인스턴스는그사용자만사용할수있음 ( 예 ; 장바구니 ) 이런이유로 EJB Instance Pool 을이용하지않고 EJB Instance Cache 를이용함 Cache 에들어갈수있는최대인스턴스의수를초과하면 passivate 현상이발생 66

67 Stateful Session Bean 의 Life Cycle Stateful Session Bean 은상대적으로복잡한 Life Cycle 을가짐 존재하지않는상태 timeout 1. newinstance() 2. Dependency Injection 또는 timeout LRU 콜백 트랜잭션을처리하는않는비즈니스메소드 Method Ready Passive 트랜잭션을처리하는비즈니스메소드 콜백 트랜잭션롤백 afterbegin() beforecompletion() aftercompletion(true) aftercompletion(false) 트랜잭션을처리하는비즈니스메소드 Method Ready in Transaction(TX) 트랜잭션으로처리해서는안되는메소드또는서로다른트랜잭션에서수행하는메소드 에러 67

68 Stateful Session Bean 의 SessionSynchronization 상태유지세션빈은트랜잭션을수행전후의로직의값을원복시킬수있는세션동기화기능이있음 DB는롤백되면이전값으로되돌아가지만 Application은그렇지않음 Stateful Session Bean이 SessionSynchronization을구현하면세션동기화기능을사용할수있음 DB 작업을하던중롤백처리가되면장바구니도이전상태로되돌아간다. 68

69 SessionSynchronization 인터페이스 SessionSynchronization에는 public class ShoppingCartBean implements ShoppingCart, SessionSynchronization { public void afterbegin() throws EJBException, RemoteException { System.out.println("ShoppingCartBean.afterBegin()"); public void beforecompletion() throws EJBException, RemoteException { System.out.println("ShoppingCartBean.beforeCompletion()"); public void aftercompletion(boolean b) throws EJBException, RemoteException { System.out.println("ShoppingCartBean.afterCompletion() is " + b); 69

70 SessionSynchronization 인터페이스사용예 Stateful Session Bean public class ShoppingCartBean implements ShoppingCart, SessionSynchronization { public void afterbegin() throws EJBException, RemoteException { // 트랜잭션수행전에복원할값을임시로저장한다. public void beforecompletion() throws EJBException, RemoteException { // 필요한작업을구현한다. public void aftercompletion(boolean iscommit) throws EJBException, RemoteException { if(!iscommit) { // 롤백되었으므로 afterbegin() 메소드에서저장해둔이전값으로복원한다. else { // 커밋되었으므로 afterbegin() 메소드에서저장해둔이전값을삭제한다. 70

71 Stateful Session Bean 의 Passivation Passivation 은 Cache 의크기가작을때발생한다. 잦은 Passivation 은성능저하를유발한다. 71

72 다사용한 Stateful Session Bean 인스턴스는삭제하라! Stateful Session Bean 은개발자가작업이끝난후에삭제하지 않으면일정한시간동안 Cache 에존재하게되므로 Heap 이낭 비된다. 과도한요청이발생하면 Heap 부족으로인하여 Full GC 를유발 하고 JVM 이 Crash 된다. 따라서다사용한Stateful Session Bean은정상적으로삭제해야한다. 72

73 @Remove annotation annotation은 Stateful Session public class ShoppingCartBean implements ShoppingCart, SessionSynchronization {... public void checkout() { // 결제처리를한다. // EJB 메소드를수행한이후에빈인스턴스를삭제한다. 73

74 Stateful Session Bean 의 Callback Stateful Session Bean 은 4 설명빈인스턴스를삭제한이후에컨테이너가호출하는콜백메소드빈인스턴스가생성된직후에컨테이너가호출하는콜백메소드빈인스턴스가 passivate되어 2차저장소에저장되기전에호출하는콜백메소드 Passivate된빈인스턴스가 activate된후에호출하는콜백메소드 Stateless Session Bean 은 Passivation 과 Activation 을수행할 떄호출하는콜백메소드는지원하지않는다. 이유 : 그럴필요 가없다. 왜? 모든인스턴스가동일하니까 74

75 Session Bean 와 Exception 처리 EJB 말하는 Exception 의종류 Application 애플리케이션수행에있어서필요한예외. 일반적으로 Exception 을상속하여구현 System Exception 시스템의오류로인하여발생하는예외. 애플리케이션에서복구가불가능. RuntimeException 을상속한예외 EJBException RemoteException 기타등등 일반적인 Exception 의종류 Checked Exception Unchecked Exception RuntimeException 을상속한예외들 75

76 System Exception 은 EJB 에서쓰지마라! EJB 내부로직을수행하던도중 System Exception이발생하면 EJB Container는 현재수행중인 Transaction을롤백한다. 현재사용하던빈인스턴스를삭제한다. 현재상태가불안정하다고판단한다. 개발자가비즈니스로직을처리하는데있어서 System Exception을던지고제대로처리하지못하면 EJB Container는빈인스턴스를삭제하게되는데동시 Active User와비례하여인스턴스의수가모자라면다시생성하게된다. 반복적으로 create/remove 가발생하면성능에좋지않다!! 76

77 Summary EJB 3.0 의 Session Bean 은 POJO 기반이다. Session Bean 은 Remote/Local Interface 를모두가질수있다. Stateless Session Bean 은모든클라이언트에게동일하며 EJB Instance Pool 을사용한다. 단일메소드당하나의트랜잭션이수행되며중첩트랜잭션을지원하지않는다. Stateful Session Bean 은특정사용자의상태를유지하는빈으로써 EJB Instance Cache 를이용한다. 여러메소드를하나의트랜잭션으로수행할수있으며중첩트랜잭션은지원하지않는다. Stateful Session Bean 은세션동기화기능을제공한다. 애플리케이션예외처리는 System Exception 을사용하지마라! 77

78 Q & A Q & A 78

79 EJB 3.0 Message-Driven Bean Java EE 5.0 Business Tier Component Technology 김병곤

80 JMS(Java Message Service) Java EE 에서유일하게비동기처리방식으로처리 1:1, 1:N 메시지송수신을지원 Message Queue 의자바표준 EJB 의 Message-Driven Bean 은 JMS 의메시지수신클라이언트 역할로수행 송신자는 JMS 의 Queue/Topic 으로메시지를비동기로송신하 고수신자는비동기로메시지를수신 80

81 비동기메시징의두가지방식 Point-To-Point(1:1) Messaging Publish/Subscribe(1:N) Messaging 81

82 Java EE 5 에서 JMS 위치 82

83 Message-Driven Bean Enterprise JavaBeans 를구성하고있는 Enterprise Bean 의하 나 비동기로메시지를수신하여처리하는 Enterprise Bean 비동기처리시매우유용한빈 JMS(Java Message Service) 의메시지수신클라이언트 트랜잭션처리지원 83

84 JMS 아키텍처와구성요소 JMS Provider 메시지송수신의책임을지는 JMS 서버제공자 ( 벤더 ;IBM, BEA..) JMS Client 메시지를송신및수신하는클라이언트 JMS Message JMS 클라이언트간송수신할수있는메시지 Administrated Object 시스템관리자의관리대상이되는객체 메시지의송수신책임을가지는 Queue/Topic 및 ConnectionFactory가여기에해당 시스템관리자가필요에따라관리콘솔에서추가가능 84

85 JMS 애플리케이션의구조 JMS 클라이언트는 JMS Server 를통해서비동기로메시지를송 수신 85

86 JMS API JMS API 를구성하는핵심인터페이스및클래스 JMS Parent PTP 메시징모델 Pub/Sub 메시징모델 ConnectionFactory QueueConnectionFactory TopicConnectionFactory Connection QueueConnection TopicConnection Destination Queue Topic Session QueueSession TopicSession MessageProducer QueueSender TopicPublisher MessageConsumer QueueReceiver, QueueBrowser TopicSubscriber 86

87 JMS 애플리케이션의송수신처리흐름도 JNDI 네이밍 1. lookup Destination (Queue/Topic) 2. lookup 3. 커넥션획득 ConnectionFactory Connection MessageConsumer 6. 메시지소비자생성 Session Message MessageProducer 87

88 JMS Administrated Object 관리 WAS 또는 JMS Server 콘솔에서는 Administrated Object를동적으로구성할수있는기능을제공 88

89 JMS 에서지원하는 Message 의종류 JMS 는 5 가지유형의메시지를지원 89

90 기타 JMS 의기능 메시지영속성 송신한메시지를 persistence storage에저장하는방식으로써메시지의안전한전달을위한기능 메시지승인 수신자가메시지를수신했는지확인하기위한 mechanism 트랜잭션처리 Java EE 의 JTA 와통합하여글로벌트랜잭션수행가능 메시지선택자 메시지의헤더의특정조건에부합하는메시지만선택적으로수신 기타등등 벤더에따라서 JMS Server 는매우다양한기능을제공함 90

91 Message-Driven Bean Message-Driven Bean 은 JMS 클라이언트를 Enterprise Bean 으로확장한개념 EJB Container JMS 메시지송신자 메시지송신 호출 세션빈 호출 사용 세션빈 엔티티빈 원격호출 데이터베이스처리 데이터베이스처리 웹서비스 메시지송신 메시지드리븐빈 데이터베이스처리 데이터베이스 JMS Queue 91

92 Message-Driven Bean 의 Life Cycle Message-Driven Bean 은 Stateless Sesssion Bean 과아주유사 한 Life Cycle 을가진다. JMS 메시지송신자 메시지송신 EJB Container 인스턴스풀 메시지드리븐빈 C 의인스턴스 M1 M3 M2 M1 M3 M2 메시지송신 JMS Queue 메시지드리븐빈 A 의인스턴스 메시지드리븐빈 B 의인스턴스 92

93 Message-Driven Bean 의제약사항 외부에서접근가능한인터페이스가없다. Session Bean 의경우 Remote/Local Interface 가존재 메시지수신시예외가발생하면메시지수신처리가롤백된다. 93

94 Message-Driven Bean 의정의 Message-Driven Bean 은다음의조건에만족하도록정의 MessageListener 인터페이스를구현 메시지수신시호출되는메소드인 onmessage() = propertyname = "destinationtype", propertyvalue = propertyname = "destination", propertyvalue = "topic/testtopic")) public class MyMessageDrivenBean implements MessageListener { public void onmessage(message msg) {... 생략 94

95 Message-Driven Bean 의 Callback Message-Driven Bean 은 Stateless Session Bean 과매우유사 Callback도동일 Life Cycle도동일 EJB Instance Pool을사용하는것도동일 Message-Driven Bean 은 2 개의 95

96 MessageListener 의 onmessage() 메소드 JMS 의 Queue/Topic 으로부터메시지를수신하게되면 EJB Container 가 onmessage() 메소드를호출 public void onmessage(message msg) { TextMessage m = (TextMessage) msg; try { System.out.println(m.getText()); catch (JMSException e) { // 메시지처리도중예외발생. e.printstacktrace(); 96

97 Summary Message-Driven Bean 은비동기처리에매우유용한빈이다. Stateless Session Bean 과 Life Cycle 이동일하다. 표준송수신메시지는 5 가지를제공한다. JTA 와같은분산트랜잭션과통합하여메시지처리가가능하다. Core J2EE Pattern 에서는이빈을이용하여다양한비동기처리 패턴을적용한다. 97

98 Q & A Q & A 98

99 EJB 3.0 Interceptor Java EE 5.0 Business Tier Component Technology 김병곤

100 Interceptor EJB 3.0 에서새로추가된기능 특정한기능이수행되기전에먼저처리해야할작업을기술하여수행하는기능 AOP(Aspect-Oriented Programming) 의 Advice 와유사 특정메소드, 특정클래스에대해서 Interceptor 를적용가능 100

101 Interceptor 의호출 클라이언트가비즈니스로직을호출하면 EJB Container 는비즈 니스로직을호출하기전에 Interceptor 를먼저처리한다. 101

102 Interceptor 의유형 2 가지유형의 Interceptor Interceptor 유형 정의방법 Annotation 장단점 Interceptor 메소드 사용하기쉽지만빈내부코드가지저분해진다. Interceptor 완전히빈코드와분리시킬수있다. 102

103 Interceptor Method Interceptor Method annotation public class InterceptorHelloBean implements InterceptorHello { public void sayhello() { System.out.println("Hello EJB public Object myinterceptor(invocationcontext ctx) throws Exception { System.out.println("Interceptor가호출되었습니다."); // 계속 HelloWorldBean의비즈니스메소드를실행합니다. return ctx.proceed(); 처리결과 11:08:45,265 INFO [STDOUT] Interceptor가호출되었습니다. 11:08:45,265 INFO [STDOUT] Hello EJB 3.0~! 103

104 Interceptor Class annotation 으로 기술 public class TracingInterceptor public Object log(invocationcontext ctx) throws Exception { System.out.println("TracingInterceptor가호출되었습니다."); long start = System.currentTimeMillis(); // 시작시간을측정한다. try { return ctx.proceed(); // 비즈니스메소드를호출한다. catch (Exception e) { throw e; finally { // 비즈니스메소드가호출되고나면이메소드가호출된다. long time = System.currentTimeMillis() - start; String method = ctx.getbean().getclass().getname() + "." + ctx.getmethod().getname() + "()"; System.out.println(method + " 메소드의수행성능은 " + time + "ms초"); 104

105 Interceptor Class Enterprise public class JMSSenderBean implements JMSSender = "queue/testqueue", type = javax.jms.queue.class) Queue queue;... 생략 105

106 Method 수준의 Interceptor Class Interceptor Class public class MethodLevelInterceptorBean implements InterceptorHello public void sayhello() { System.out.println("Hello EJB 3.0~!"); 106

107 복잡한 Interceptor 의정의 하나이상의 public class MethodLevelInterceptorBean implements public void sayhello() { System.out.println("Hello EJB 3.0~!"); 107

108 InvocationContext 인터페이스 메소드명 설명 getbean() 빈의인스턴스를반환한다. getmethod() interceptor annotation 에서는호출하는빈의메소드가반환되지만 callback interceptor 메소드의경우는 null 을반환한다. getparameters() 메소드의파라미터가반환된다. setparameters() 메소드의파라미터를설정한다. getcontextdata() InvocationContext 에서전달할값을반환한다. 이메소드의반환값이 Map 을이용하면다수의 interceptor 간에정보를서로전달할수있다. proceed() 하나이상의 interceptor 를호출하도록되어있다면다음 interceptor 를호출한다. 그리고맨마지막 interceptor 가호출되면 EJB 의비즈니스메소드를호출한다. 하나이상의 interceptor 를호출하도록되어있다면컨테이너가각각의 interceptor 를호출이완료될때마다호출하며이 proceed() 메소드의반환값은호출된다음메소드의결과값이다. 만약에메소드의반환값이 void 라면이반환값도 null 이된다. 이전에 sayhello() 메소드가처리되고난후 proceed() 메소드가 null 을반환한것은 sayhello() 메소드의반환값이 void 이기때문이다. 108

109 Life Cycle Callback Interceptor Enterprise Bean 의 Life Cycle 에대한 Callback 메소드를컨테 이너가호출하기전에 Interceptor 를사용할수있다. public class LifecycleInterceptor 콜백메소드를호출하기전호출된다. public void postconstruct(invocationcontext ctx) { try { System.out.println("LifecycleInterceptor postconstruct called"); ctx.proceed(); catch (Exception e) { throw new RuntimeException(e); finally { System.out.println("LifecycleInterceptor postconstruct end"); 109

110 Life Cycle Callback Interceptor Callback 메소드가호출되기전에 Callback // Callback Interceptor를정의. public class LifecycleCallbackBean implements LifecycleCallback {... // Callback public void dopostconstruct() { System.out.println("doPostConstruct() called"); 110

111 Summary Interceptor는특정로직이수행되기전에수행하는공통로직을정의할때사용 Interceptor는초보적인 AOP의개념 Interceptor Method/Class를제공 Interceptor Class는전체빈의메소드가모두적용됨 Interceptor Method와 Class를혼합하여적용가능 Life Cycle Callback도 Interceptor를적용할수있음 111

112 Q & A Q & A 112

113 EJB 3.0 Transaction & Exception Java EE 5.0 Business Tier Component Technology 김병곤

114 EJB Transaction 과 Exception EJB 에서 Transaction 과 Exception 은매우밀접한관계가있음 EJB Transaction 은 Local Transaction 및 JTA Transaction 을모두지원 개발자는 Transaction 에대해서선언또는프로그래밍기법적용가능 EJB 는기본적으로메소드호출에대해서단일트랜잭션으로수행 시스템예외는트랜잭션을롤백시킴 114

115 EJB Transaction Scenario - 1 동일서버내에서여러데이터베이스의값을변경 115

116 EJB Transaction Scenario - 2 동일서버내에서 JMS 의 Queue 와다수의데이터베이스값을 변경 116

117 EJB Transaction Scenario - 3 메시지를수신하는메시지드리븐빈이다수의데이터베이스의값을변경 117

118 EJB Transaction Scenario - 4 여러 EJB 서버에서데이터베이스의값을변경 EJB Container EJB Container Client X Y 데이터베이스 A 데이터베이스 B 118

119 EJB Transaction Scenario - 5 클라이언트소스코드내에서트랜잭션을시작하며관리 begin 데이터베이스 A commit 데이터베이스 B 119

120 EJB Transaction Scenario - 5 클라이언트소스코드내에서트랜잭션을시작하며관리 클라이언트는 UserTransaction을 JNDI를통해얻어서클라이언트에서트랜잭션을수행 Context ctx = new InitialContext(); tx = (UserTransaction)ctx.lookup( java:comp/env/usertransaction"); tx.begin(); // 트랜잭션시작 bean.deposit(100); // 엔터프라이즈빈호출. tx.commit(); 또는 tx.rollback(); // 트랜잭션종료 120

121 EJB Transaction Scenario - 6 자바가아닌클라이언트또는서버와의호환성 121

122 EJB Transaction 유형별분류 트랜잭션관리방법에따른분류 컨테이너가트랜잭션을관리 (Container-Managed Transaction;CMT) 선언적트랜잭션 ( 트랜잭션의수행방법을선언하면 EJB Container 가수행하는방식 ) 개발자가트랜잭션을관리 (Bean-Managed Transaction;BMT) 개발자가직접코드를작성하여트랜잭션을수행하는방식 EJB Specification 에서는 CMT 를권장 CMT 는 BMT 보다간결하며사용하기쉽고분산트랜잭션처리를 EJB Container 가처리하도록위임하는방식. 122

123 Container-Managed Transaction 클라이언트가 Enterprise Bean 의특정메소드를호출하면 EJB Container 가트랜잭션을알아서 begin/commit/rollback 123

124 Bean-Managed Transaction 개발자는 Enterprise Bean 코드에직접트랜잭션관리코드를추가하여트랜잭션을관리 UserTransaction tx = ejbcontext.getusertransaction(); try { tx.begin(); // 트랜잭션시작 deposit(100); // 엔터프라이즈빈호출, 여러메소드가들어올수있다. tx.commit(); // 트랜잭션커밋 catch (Exception ex) { try { tx.rollback(); // 예외발생시트랜잭션롤백. BMT에서만사용하는메소드. catch (SystemException syex) { throw new EJBException(" 롤백실패 : " + syex.getmessage()); throw new EJBException (" 트랜잭션실패 : " + ex.getmessage()); 124

125 Transaction Attributes EJB Container 는다양한트랜잭션속성을지원 트랜잭션속성 REQUIRED REQUIRES_NEW SUPPORTS NOT_SUPPORTED MANDATORY NEVER 설명 기본트랜잭션속성 무조건트랜잭션처리 빈메소드를호출하면항상새로운트랜잭션으로처리 트랜잭션지원을명시 이미트랜잭션이시작된상황에서이메소드를호출하면계속처리 트랜잭션이시작되지않은상황에서이메소드를호출하면그래도계속처리 트랜잭션을지원한다는의미 트랜잭션을지원하지않음을명시 트랜잭션이시작된상황에서이속성으로명시된빈메소드를호출하면트랜잭션이일시중지됨 반드시트랜잭션으로처리함을명시 특정메소드가이속성을되어있지만트랜잭션처리가되지않으면예외발생 절대로트랜잭션으로처리해서는안됨을명시 트랜잭션이시작된상황에서이메소드를호출하면예외발생 125

126 Transaction 속성과트랜잭션전파 하나이상의빈메소드는다양한트랜잭션속성을가질수있음 하나의빈메소드는여러빈의메소드를호출할수있음 여러트랜잭션속성이결합할때트랜잭션의전파는서로다른형태로이루어짐 126

127 Transaction Attribute NOT_SUPPORTED 트랜잭션을지원하지않는것을의미하며트랜잭션이시작된상태에서이속성을가진메소드를호출하면트랜잭션은일시중지 트랜잭션속성클라이언트트랜잭션비즈니스메소드리소스관리자 NOT_SUPPORTED 없음없음없음 T1 없음없음 ** 리소스관리자는데이터베이스를의미 127

128 Transaction Attribute REQUIRED 트랜잭션을지원한다는것을의미하며기본값 트랜잭션이없다면트랜잭션을새로시작하여메소드를처리 트랜잭션속성클라이언트트랜잭션비즈니스메소드리소스관리자 REQUIRED 없음 T2 T2 T1 T1 T1 ** 리소스관리자는데이터베이스를의미 128

129 Transaction Attribute SUPPORTS 트랜잭션을지원한다는것을의미 트랜잭션이없으면없는대로, 있으면있는대로처리 트랜잭션속성클라이언트트랜잭션비즈니스메소드리소스관리자 SUPPORTS 없음없음없음 T1 T1 T1 ** 리소스관리자는데이터베이스를의미 129

130 Transaction Attribute REQUIRES_NEW 트랜잭션을지원하지만새로시작해야함을의미 이미트랜잭션이시작되어있더라도무조건새로트랜잭션을시작 트랜잭션속성클라이언트트랜잭션비즈니스메소드리소스관리자 REQUIRES_NEW 없음 T2 T2 T1 T2 T2 ** 리소스관리자는데이터베이스를의미 130

131 Transaction Attribute NOT_SUPPORTED 트랜잭션을지원하지않는것을의미하며트랜잭션이시작된상태에서이속성을가진메소드를호출하면트랜잭션은일시중지 트랜잭션속성클라이언트트랜잭션비즈니스메소드리소스관리자 NOT_SUPPORTED 없음없음없음 T1 없음없음 ** 리소스관리자는데이터베이스를의미 131

132 Transaction Attribute MADATORY 반드시트랜잭션으로처리해야함을의미 트랜잭션처리를하지않으면예외발생 트랜잭션속성클라이언트트랜잭션비즈니스메소드리소스관리자 NOT_SUPPORTED 없음에러 N/A T1 T1 T1 ** 리소스관리자는데이터베이스를의미 132

133 Transaction Attribute NEVER 절대로트랜잭션으로처리해서는안됨 트랜잭션으로처리하면예외발생 트랜잭션속성클라이언트트랜잭션비즈니스메소드리소스관리자 NOT_SUPPORTED 없음 없음 없음 T1 에러 N/A ** 리소스관리자는데이터베이스를의미 133

134 // BMT로지정 public class BMTBean implements BMT ctx;... 생략 134

135 빈메소드의트랜잭션속성정의하기 public void addbook(book book) throws CMTException { Connection conn = null; PreparedStatement psmt = null; try { conn = ds.getconnection(); String sql = "INSERT INTO BOOK (...) VALUES(...)";... 생략 catch (Exception e) { ctx.setrollbackonly(); // 트랜잭션을롤백한다. CMT에서만지원 throw new CMTException(" 예외가발생했습니다.", e); finally { // 관련자원을해제한다. close(psmt, conn); 135

136 EJB Exception EJB Exception 처리는 EJB Specification 에서많은양을할당할 만큼중요 대부분의개발자들이 EJB Exception 에대해서이해가없는경우 가많음 EJB Exception 은트랜잭션처리와밀접한관계를가짐 Exception 에따라 EJB Container 의트랜잭션처리의방식이달 라짐 136

137 Exception 의구조 137

138 EJB Exception 의분류 Application Exception Exception 을상속한예외 비즈니스애플리케이션에서사용하는예외 이예외가발생하더라도트랜잭션은롤백되지않음 System Exception RuntimeException 을상속한예외 시스템에서는복구할수없는수준의예외라고판단 EJB Bean Instance 를삭제 트랜잭션을롤백 대표적으로다음의예외가있음 NullPointerException, EJBException, RemoteException, ClassCastException, 기타등등 ** RemoteException 은 RuntimeException 을상속하지않았지만시스템예외로간주 138

139 Application Exception 정의하기 비즈니스로직과관련된예외는 Application Exception 을사용 해야함 Exception annotation은해당예외가application = true) Public class MyApplicationException extends Exception {... 생략 Application Exception는명시적으로트랜잭션이롤백되지않기때문에개발자가 rollback=true 로설정하여명시적으로롤백하도록설정가능 139

140 CMT 환경에서명시적으로트랜잭션롤백처리 CMT 는 EJB Container 가트랜잭션을모두관리 하지만개발자는명시적으로처리하고싶은경우도있음 CMT 환경에서명시적으로트랜잭션을롤백하려면 EJBContext.setRollbackOnly() 메소드를호출하던가 로설정하던가 140

141 System Exception 의제약사항 System Exception 은 RuntimeException을상속한예외 RemoteException System Exception은 try-catch 로처리하기곤란. 개발자는 System Exception을 try-catch로처리해서는안됨 System Exception은 EJB Container가처리하도록위임 System Exception이발생하면EJB Bean Instance가삭제되고트랜잭션이롤백 System Exception이빈번하게발생하면EJB Bean Instance가생성되고삭제되는과정이빈번하게이루어져컨테이너에부담이됨 141

142 Summary EJB Container는분산된환경에서도동일한방식으로 Transaction처리를유연하게처리 개발자는 CMT를사용한것을강력히권고 Transaction의시작에따라서코딩하는방식이다름 EJB Specification에서는 Exception 처리를강력히 recommend하고있음 비즈니스로직의처리는 Application Exception만사용해야함 System Exception은트랜잭션이롤백되고 EJB Bean Instance 가삭제됨 142

143 Q & A Q & A 143

144 EJB 3.0 Timer Service Java EE 5.0 Business Tier Component Technology 김병곤

145 Timer Service 특정시간또는특정한주기동안비즈니스로직을수행해야할일이발생하는경우사용하는서비스 EJB 2.1 에서새로추가 자바의 java.util.timer 와유사 EJB 컨테이너내부에서동작하는타이머 트랜잭션지원 145

146 Java 의 java.util.timer 타이머 Java SE 환경에서는 Timer와 TimerTask를이용하여타이머기능을구현할수있음 int numberofmillisecondsinthefuture = 10000; // 10초 Date timetorun = new Date(System.currentTimeMillis() + numberofmillisecondsinthefuture); Timer timer = new Timer(); // 타이머생성 timer.schedule(new TimerTask() { // 타이머가실행할 TimerTask를구현 public void run() { // 10초후에해야할작업을정의, timetorun); // 타이머스케줄링 146

147 java.util.timer 의한계 복잡한스케줄링을지원하지않음 단일쓰레드기반 EJB 컨테이너내부에서사용하는데위험이따름 (EJB 에서는 Thread 를직접컨트롤하지않도록하고있음 ) 147

148 EJB 의 Timer Service 에서제공하는 Timer Timer createtimer(long duration, java.io.serializable info) 일정한시간이후에타이머이벤트를발생하는타이머를생성한다. Timer createtimer(long initalduration, long intervalduration, java.io.serializable info) 초기대기시간이후에반복적으로대기하면서이벤트를발생하는타이머를생성한다. Timer createtimer(java.util.date expiration, java.io.serializable info) 타이머의기한만료시간까지수행하는타이머를생성한다. Timer createtimer(java.util.date initialexpiration, long intervalduration, java.io.serializable info) 초기 expire 이후에반복적으로대기하면서이벤트를발생하는타이머를생성한다. Collection gettimers() 타이머서비스에등록되어있는모든타이머를반환한다. 10초간대기한이후에 5초마다수행하는타이머 Timer timer = TimerService.createTimer(10000, 2000, "Hello World"); 148

149 EJB Timer 서비스얻기 EJB Timer 서비스는다음의경우중에한가지방법으로얻을수있다. Dependency Injection JNDI EJBContext.getTimerService() 149

150 Dependency Injection 을이용한 Timer Service annotation 을이용하여 Timer Service public class SimpleTimer implements SimpleTimerRemote private javax.ejb.timerservice timer; // Dependency Injection public void calltimer(long milliseconds) { timer.createtimer(new Date(new Date().getTime() + milliseconds), "Hello World");... 생략 150

151 EJBContext 를이용한 Timer Service 얻기 EJBContext 를이용하여 Timer Service public class SimpleTimer implements SimpleTimerRemote private SessionContext ctx; // Dependency Injection public void calltimer(long milli) { ctx.gettimerservice().createtimer(new Date(new Date().getTime() + milli), "Hello World");... 생략 151

152 JNDI 를이용한 Timer Service 얻기 JNDI 에등록되어있는 Timer Service 를얻는다. Context ctx = new InitialContext(); TimerService timer = (TimerService) ctx.lookup("mytimer"); timer.createtimer(new Date(new Date().getTime() + milliseconds), "Hello World"); 152

153 Timeout annotation 은타이머서비스가해당시간이되었을 때발생하는 Callback 을지정할때사용 Timer 가 expire Callback public void timeouthandler(timer timer) { System.out.println(" "); System.out.println(" 타이머이벤트발생 : " + timer.getinfo()); System.out.println(" "); timer.cancel(); 153

154 Timer 가적용된 Stateless Session Bean public class SimpleTimer implements SimpleTimerRemote private javax.ejb.timerservice timer; // Dependency Injection public void calltimer(long milliseconds) { timer.createtimer(new Date(new Date().getTime() + milliseconds), public void timeouthandler(timer timer) { System.out.println(" "); System.out.println(" 타이머이벤트발생 : " + timer.getinfo()); System.out.println(" "); timer.cancel(); 154

155 Timer Service 와 Exception 그리고 Transaction 타이머가스케줄링되어있을때 System Exception 을발생하면 EJB Instance 는삭제된다. 또한타이머도삭제된다. 타이머를취소할때트랜잭션이롤백되면타이머취소자체도롤백된다. 타이머를생성할때트랜잭션이롤백되면타이머생성자체도롤백된다. 155

156 Timeout Callback 과 Life Cycle Timeout 이발생한이후에는 Stateless Session Bean 은다시 EJB Instance Pool 로복귀한다. 존재하지않는상태 1. newinstance() 2. Dependency Injection 콜백 비즈니스메소드 Method-Ready Pool 타임아웃콜백 156

157 TimerHandler TimerHandler는 Timer Service를직렬화하여보관할수있는기능을제공한다. 직렬화를통해파일에기록했다가다시 Timer Service를재사용할수있다. 실제로쓸일이없는기능!! 157

158 Summary EJB Timer Service 는간단한스케줄링기능을제공한다. 트랜잭션과연관지어처리할수있다. 다양한방식으로 Timer Service 를얻을수있다. 보다정교한 Timer Service를사용하려면엔터프라이즈스케줄러인 OpenSymphony의 Quartz Job Scheduler가좋은대한 Spring Framework과잘통합되므로 Java EE 애플리케이션에서쉽게사용할수있다. WAS와어댑터를제공한다. 158

159 Q & A Q & A 159

160 EJB 3.0 WebService Java EE 5.0 Business Tier Component Technology 김병곤

161 EJB WebService EJB 2.1 에서추가된기능 EJB 의비즈니스로직을웹서비스로 export 하여타플랫폼에서 호출할수있게함 EJB 3.0 은보다간결하게웹서비스를구성할수있음 Session Bean 을 WebService 가가능하도록하면 WSDL 을 EJB Container 가자동생성하고 export 함 161

162 EJB WebService Interface 정의 annotation을이용하여기술 인터페이스는 = SOAPBinding.Style.RPC) public interface EndpointInterface extends Remote { String sayhello(); // WebService 로 export 할메소드 162

163 EJB WebService Bean Implementation WebService의 Endpoint Interface를정의하고 WebService로 = // 리모트인터페이스 public class MyWebService public String sayhello() { // 웹서비스를통해원격에서호출할메소드 return " 나의이름은팬돌이."; 163

164 EJB WebService Deploy Stateless Session Bean 을 WebService 가가능하도록하여배 포하면 EJB Container 는동적으로 WSDL 을구성 [WSDLFilePublisher.java] WSDL published to: file:/c:/program Files/JBoss GA/server/default/data/wsdl/tutorial.jar/EndpointInterfaceService wsdl [ServiceEndpointManager.java] WebService started: 웹브라우저에서는 을통해서 WSDL에접근가능 164

165 WebService WSDL 파일 165

166 WebService Client.NET 기반플랫폼에서는.NET Framework SDK 의 wsdl.exe 를통 해서 WSDL 을분석하여호출가능한코드를자동생성 Java 기반플랫폼에서는 WebService Client 를별도로구성 JBoss의경우클라이언트는 CLASSPATH의 META-INF/standardjaxrpc-client-config.xml 파일을포함시켜야함 타 Web Application Server(WAS) 의경우는다소상이함 166

167 Java 기반 WebService Client 작성하기 public class Client { public static void main(string[] args) throws Exception { String serviceurl = " URL url = new URL(serviceUrl); String namespace = " String servicename = "EndpointInterfaceService"; QName qname = new QName(namespace, servicename); ServiceFactory factory = ServiceFactory.newInstance(); Service remote = factory.createservice(url, qname); EndpointInterface proxy = (EndpointInterface) remote.getport(endpointinterface.class); 공통코드 // 웹서비스를이용한비즈니스로직호출 System.out.println(" 웹서비스호출결과 : " + proxy.sayhello()); 167

168 Summary EJB WebService 는 Enterprise Bean 을매우손쉽게 WebService 를할수있도록구성 EJB Container 는 WebService 가가능한빈의인터페이스를 WSDL 로 export 함 타플랫폼 (.NET/Java/ 기타등등 ) 에서는이 WSDL 을이용하여플 랫폼을통합할수있음 168

169 Q & A Q & A 169

170 EJB 3.0 Development Java EE 5.0 Business Tier Component Technology 김병곤

171 EJB 3.0 기반애플리케이션개발환경요구사항 Java Development Kit(JDK) Sun JDK 5.0 이상 Integrated Development Environment(IDE) Eclipse 3.2 이상 IntelliJ IDEA 6.x 이상 Borland JBuilder 2006 이상 NetBeans 5.5 JDeveloper 최신 Web Application Server(WAS) JBoss 4.0.5GA GlassFish BEA WebLogic 10 Oracle AS Tmax JEUS 6.0 Preview 기타등등. 171

172 WAS 의 Entity Bean(JPA) 구현메커니즘 JBoss 4.0.5GA Hibernate BEA WebLogic 10 Solarmetrics Kodo JDO Oracle AS Oracle Toplink Essential Tmax JEUS 6.0 Preview Oracle Toplink Essential 172

173 Application Deployment EAR.ear 파일 웹애플리케이션이있는경우 EJB로구현된애플리케이션이있는경우 웹애플리케이션이 EJB를호출해야하는경우.ear 파일은다수의 EJB.jar와.war 파일로구성됨 EJB.jar 파일 웹애플리케이션이없는경우 EJB 로만구성되는 EJB 애플리케이션의경우에는 EJB.jar 파일형 태로배포가능 173

174 Enterprise Application EAR.ear 패키징 J2EE Server( 웹애플리케이션서버 ) JNDI Naming Service 웹서비스 Connector Web Container 리소스검색 호출 EJB Container 세션빈 원격호출 외부서버 요청 JSPs 세션빈 사용 데이터베이스처리 클라이언트 웹서버 Servlet Servlet 호출 메일송신 메시지송신 메시지드리븐빈 엔티티빈 데이터베이스처리 데이터베이스처리 데이터베이스.war 패키징 Java Mail.jar 패키징 Java Message Service 메시지송신.ear 패키징 174

175 JBoss 의 EAR.ear 파일의구조.ear 파일 META-INF application.xml jboss-app.xml.war 와.jar 를정의한 XML 파일.war 파일 WEB-INF lib classes web.xml jboss-web.xml intro.jsp search.jsp 웹애플리케이션관련 XML 파일.jar 파일 META-INF com persistence.xml Persistence Unit 을정의한 XML 파일 j2eearchitect ejb3 entity 엔티티빈클래스 FacadeSession Address.class Customer.class Shop.class Menu.class OrderMenu.class Payment.class

176 EAR.ear 의 application.xml 파일 EAR.ear 파일을구성하는 EJB와웹애플리케이션등에대한아카이브파일에대한정의가포함 <?xml version="1.0" encoding="utf-8"?> <application> <display-name>ejb3trail</display-name> <description>j2ee Made Easy Trail Map</description> <module> <ejb>beans.jar</ejb> </module> <module> <web> <web-uri>web.war</web-uri> <context-root>ejb3trail</context-root> </web> </module> </application> 176

177 JBoss 의특정파일은 jboss-app.xml JBoss 에서만사용하는 Application Description XML 파일 <jboss-app> <loader-repository> trailblazer:app=ejb3 </loader-repository> </jboss-app> EAR.ear 파일은 jboss-app.xml 파일의내용이모두달라야함 jboss-app.xml 파일은해당 EAR.ear 파일의클래스가다른애플리케이션과충돌을방지하기위해서 ClassLoader를완전하게격리시키기위해서사용하는파일 177

178 EJB.jar 의 Entity Bean 설정파일인 persistence.xml EJB 3.0의 Entity Bean은 Persistence Provider를통해동작가능하게됨 이 Persistence Provider와 Entity Bean에대한정의는 persistence.xml 파일에기술 <persistence version="1.0"> <!-- Persistence Unit을정의하고트랜잭션의유형을결정 --> <persistence-unit name="manager" transaction-type="resource_local"> <provider>org.hibernate.ejb.hibernatepersistence</provider> <!-- Oracle DataSource에대한 JNDI 이름설정 --> <jta-data-source>java:/oracleds</jta-data-source> <properties> <!-- JBoss의 EJB 3.0 JPA 구현체인 Hibernate 설정속성 --> <property name="hibernate.show_sql" value="true"/> <property name="org.hibernate.hbm2ddl" value="update"/> </properties> </persistence-unit> </persistence> 178

179 JNDI Naming 규칙 Stateless Session Bean 이다음과같은경우 Remote Interface : com.xx.xx.helloremote Local Interface : com.xx.xx.hellolocal Bean Class : com.xx.xx.hellpbean JNDI 명은패키징과호출방식에따라서다음과같이결정됨 EAR.ear Remote Call : <EAR_FILE_NAME>/HelloRemote/remote Local Call : <EAR_FILE_NAME>/HelloLocal/local EJB.jar Remote Call : HelloRemote/remote Local Call : HelloLocal/local 179

180 JNDI Naming 규칙사용예 EAR.ear 패키징을하고 JSP 페이지에서 EJB 를호출하는경우 InitialContext ctx = new InitialContext(); Calculator cal = (Calculator) ctx.lookup("ejb3trail/entitycalculator/local"); EAR.jar 파일로배포하고 EJB 가다른 EJB 를호출하는경우 (Dependency Injection 사용하지않음 )(Local 호출 ) InitialContext ctx = new InitialContext(); Calculator cal = (Calculator) ctx.lookup("entitycalculator/local"); EAR.jar 파일로배포하고원격클라이언트가호출하는경우 (Remote 호출 ) InitialContext ctx = new InitialContext(); Calculator cal = (Calculator) ctx.lookup("entitycalculator/remote"); 180

181 Q & A Q & A 181

목차 JEUS EJB Session Bean가이드 stateful session bean stateful sample 가이드 sample source 결과확인 http session에

목차 JEUS EJB Session Bean가이드 stateful session bean stateful sample 가이드 sample source 결과확인 http session에 개념정리및샘플예제 EJB stateful sample 문서 2016. 01. 14 목차 JEUS EJB Session Bean가이드... 3 1. stateful session bean... 3 1.1 stateful sample 가이드... 3 1.1.1 sample source... 3 1.1.2 결과확인... 6 1.2 http session에서사용하기...

More information

Intro to Servlet, EJB, JSP, WS

Intro to Servlet, EJB, JSP, WS ! Introduction to J2EE (2) - EJB, Web Services J2EE iseminar.. 1544-3355 ( ) iseminar Chat. 1 Who Are We? Business Solutions Consultant Oracle Application Server 10g Business Solutions Consultant Oracle10g

More information

No Slide Title

No Slide Title J2EE J2EE(Java 2 Enterprise Edition) (Web Services) :,, SOAP: Simple Object Access Protocol WSDL: Web Service Description Language UDDI: Universal Discovery, Description & Integration 4. (XML Protocol

More information

교육2 ? 그림

교육2 ? 그림 Interstage 5 Apworks EJB Application Internet Revision History Edition Date Author Reviewed by Remarks 1 2002/10/11 2 2003/05/19 3 2003/06/18 EJB 4 2003/09/25 Apworks5.1 [ Stateless Session Bean ] ApworksJava,

More information

Spring Data JPA Many To Many 양방향 관계 예제

Spring Data JPA Many To Many 양방향 관계 예제 Spring Data JPA Many To Many 양방향관계예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) 엔티티매핑 (Entity Mapping) M : N 연관관계 사원 (Sawon), 취미 (Hobby) 는다 : 다관계이다. 사원은여러취미를가질수있고, 하나의취미역시여러사원에할당될수있기때문이다. 보통관계형 DB 에서는다 : 다관계는 1

More information

J2EE Concepts

J2EE Concepts ! Introduction to J2EE (1) - J2EE Servlet/JSP/JDBC iseminar.. 1544-3355 ( ) iseminar Chat. 1 Who Are We? Business Solutions Consultant Oracle Application Server 10g Business Solutions Consultant Oracle10g

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

歯Writing_Enterprise_Applications_2_JunoYoon.PDF

歯Writing_Enterprise_Applications_2_JunoYoon.PDF Writing Enterprise Applications with Java 2 Platform, Enterprise Edition - part2 JSTORM http//wwwjstormpekr Revision Document Information Document title Writing Enterprise Applications

More information

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id=entitymanagerfactory class=org.springframework.orm.jpa.localentitymanagerfactorybean p:persistenceunitname= JPA 와 Hibernate - 스프링의 JDBC 대신에 JPA를이용한 DB 데이터검색작업 - JPA(Java Persistence API) 는자바의 O/R 매핑에대한표준지침이며, 이지침에따라설계된소프트웨어를 O/R 매핑프레임워크 라고한다. - O/R 매핑 : 객체지향개념인자바와관계개념인 DB 테이블간에상호대응을시켜준다. 즉, 객체지향언어의인스턴스와관계데이터베이스의레코드를상호대응시킨다.

More information

rmi_박준용_final.PDF

rmi_박준용_final.PDF (RMI) - JSTORM http://wwwjstormpekr (RMI)- Document title: Document file name: Revision number: Issued by: Document Information (RMI)- rmi finaldoc Issue Date: Status:

More information

슬라이드 1

슬라이드 1 EJB and JBoss SEAM 양수열소장 Java Champion, JCO Advisor, Inpion Consulting Agenda Web Framework & EJB What is Seam? Why Seam? Q/A Framework history Main Milestone in Standard & OpenSource 95 96 97 98 99 00

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345]) 예외와예외클래스 예외처리 514760-1 2016 년가을학기 12/08/2016 박경신 오류의종류 에러 (Error) 하드웨어의잘못된동작또는고장으로인한오류 에러가발생되면 JVM실행에문제가있으므로프로그램종료 정상실행상태로돌아갈수없음 예외 (Exception) 사용자의잘못된조작또는개발자의잘못된코딩으로인한오류 예외가발생되면프로그램종료 예외처리 추가하면정상실행상태로돌아갈수있음

More information

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

Network Programming

Network Programming Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI

More information

(Microsoft PowerPoint - Chapter17 RMI.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - Chapter17 RMI.ppt [\310\243\310\257 \270\360\265\345]) Chapter 17. RMI Mingyu Lim Collaborative Computing Systems Lab, School of Internet & Multimedia Engineering Konkuk University, Seoul, Korea 학습목표 RMI란 RMI 구조 RMI는어떻게동작하는가 로컬객체를원격객체로변경하기 RMI를이용한계산기애플리케이션

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

2 Cover Story POJO 로돌아온 EJB 3.0 과자바퍼시스턴스 API 이번특집에서는자바EE 5의변화중가장눈에띄는 EJB 3.0과자바퍼시스턴스 (Java Persistence) API 기술을소개하고자한다. 이기술들은기존 EJB 2.1에비해서많은부분이달라졌다.

2 Cover Story POJO 로돌아온 EJB 3.0 과자바퍼시스턴스 API 이번특집에서는자바EE 5의변화중가장눈에띄는 EJB 3.0과자바퍼시스턴스 (Java Persistence) API 기술을소개하고자한다. 이기술들은기존 EJB 2.1에비해서많은부분이달라졌다. 2 Cover Story POJO 로돌아온 EJB 3.0 과자바퍼시스턴스 API 이번특집에서는자바EE 5의변화중가장눈에띄는 EJB 3.0과자바퍼시스턴스 (Java Persistence) API 기술을소개하고자한다. 이기술들은기존 EJB 2.1에비해서많은부분이달라졌다. 자바SE 5의메타데이터어노테이션 (metadata annotation) 을도입하고 POJO(Plain

More information

JAVA PROGRAMMING 실습 09. 예외처리

JAVA PROGRAMMING 실습 09. 예외처리 2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오

More information

Interstage5 SOAP서비스 설정 가이드

Interstage5 SOAP서비스 설정 가이드 Interstage 5 Application Server ( Solaris ) SOAP Service Internet Sample Test SOAP Server Application SOAP Client Application CORBA/SOAP Server Gateway CORBA/SOAP Gateway Client INTERSTAGE SOAP Service

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

Chap12

Chap12 12 12Java RMI 121 RMI 2 121 RMI 3 - RMI, CORBA 121 RMI RMI RMI (remote object) 4 - ( ) UnicastRemoteObject, 121 RMI 5 class A - class B - ( ) class A a() class Bb() 121 RMI 6 RMI / 121 RMI RMI 1 2 ( 7)

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

02 C h a p t e r Java

02 C h a p t e r Java 02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER

More information

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r Jakarta is a Project of the Apache

More information

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET 135-080 679-4 13 02-3430-1200 1 2 11 2 12 2 2 8 21 Connection 8 22 UniSQLConnection 8 23 8 24 / / 9 3 UniSQL 11 31 OID 11 311 11 312 14 313 16 314 17 32 SET 19 321 20 322 23 323 24 33 GLO 26 331 GLO 26

More information

JavaGeneralProgramming.PDF

JavaGeneralProgramming.PDF , Java General Programming from Yongwoo s Park 1 , Java General Programming from Yongwoo s Park 2 , Java General Programming from Yongwoo s Park 3 < 1> (Java) ( 95/98/NT,, ) API , Java General Programming

More information

Business Agility () Dynamic ebusiness, RTE (Real-Time Enterprise) IT Web Services c c WE-SDS (Web Services Enabled SDS) SDS SDS Service-riented Architecture Web Services ( ) ( ) ( ) / c IT / Service- Service-

More information

Microsoft PowerPoint - JCO2007_Spring2.0_발표자료_Rev-A.ppt [호환 모드]

Microsoft PowerPoint - JCO2007_Spring2.0_발표자료_Rev-A.ppt [호환 모드] From Spring 1.x Spring 2.0 To 이일민 (Consultant, Epril) 안영회 (Consultant, Epril) 2 목차 q Spring의목표와전략 q Spring 2.0 q Core Container and DI q AOP q Portable Service Abstractions q Web q Spring Portfolio 3 Spring

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

[Brochure] KOR_TunA

[Brochure] KOR_TunA LG CNS LG CNS APM (TunA) LG CNS APM (TunA) 어플리케이션의 성능 개선을 위한 직관적이고 심플한 APM 솔루션 APM 이란? Application Performance Management 란? 사용자 관점 그리고 비즈니스 관점에서 실제 서비스되고 있는 어플리케이션의 성능 관리 체계입니다. 이를 위해서는 신속한 장애 지점 파악 /

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

J2EE & Web Services iSeminar

J2EE & Web Services iSeminar 9iAS :, 2002 8 21 OC4J Oracle J2EE (ECperf) JDeveloper : OLTP : Oracle : SMS (Short Message Service) Collaboration Suite Platform Email Developer Suite Portal Java BI XML Forms Reports Collaboration Suite

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 예외처리 배효철 th1g@nate.com 1 목차 예외와예외클래스 실행예외 예외처리코드 예외종류에따른처리코드 자동리소스닫기 예외처리떠넘기기 사용자정의예외와예외발생 예외와예외클래스 구문오류 예외와예외클래스 구문오류가없는데실행시오류가발생하는경우 예외와예외클래스 import java.util.scanner; public class ExceptionExample1

More information

Microsoft PowerPoint - RMI.ppt

Microsoft PowerPoint - RMI.ppt ( 분산통신실습 ) RMI RMI 익히기 1. 분산환경에서동작하는 message-passing을이용한 boundedbuffer 해법프로그램을실행해보세요. 소스코드 : ftp://211.119.245.153 -> os -> OSJavaSources -> ch15 -> rmi http://marvel el.incheon.ac.kr의 Information Unix

More information

歯JavaExceptionHandling.PDF

歯JavaExceptionHandling.PDF (2001 3 ) from Yongwoo s Park Java Exception Handling Programming from Yongwoo s Park 1 Java Exception Handling Programming from Yongwoo s Park 2 1 4 11 4 4 try/catch 5 try/catch/finally 9 11 12 13 13

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 1,..... @ 1 Green Project 1991 Oak Java 1995. 5 December '90 by Patrick Naughton, Mike Sheridan and James Gosling Embedded in various consumer electronic device 1992. 9. 3 Star 7 1993 www portability

More information

Spring Boot

Spring Boot 스프링부트 (Spring Boot) 1. 스프링부트 (Spring Boot)... 2 1-1. Spring Boot 소개... 2 1-2. Spring Boot & Maven... 2 1-3. Spring Boot & Gradle... 3 1-4. Writing the code(spring Boot main)... 4 1-5. Writing the code(commandlinerunner)...

More information

JAVA PROGRAMMING 실습 05. 객체의 활용

JAVA PROGRAMMING 실습 05. 객체의 활용 public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string

More information

신림프로그래머_클린코드.key

신림프로그래머_클린코드.key CLEAN CODE 6 11st Front Dev. Team 6 1. 2. 3. checked exception 4. 5. 6. 11 : 2 4 : java (50%), javascript (35%), SQL/PL-SQL (15%) : Spring, ibatis, Oracle, jquery ? , (, ) ( ) 클린코드를 무시한다면 . 6 1. ,,,!

More information

Cluster management software

Cluster management software 자바네트워크프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교 최민 기본예제 예외클래스를정의하고사용하는예제 class NewException extends Exception { public class ExceptionTest { static void methoda() throws NewException { System.out.println("NewException

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

교육자료

교육자료 THE SYS4U DODUMENT Java Reflection & Introspection 2012.08.21 김진아사원 2012 SYS4U I&C All rights reserved. 목차 I. 개념 1. Reflection 이란? 2. Introspection 이란? 3. Reflection 과 Introspection 의차이점 II. 실제사용예 1. Instance의생성

More information

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f JPA 에서 QueryDSL 사용하기위해 JPAQuery 인스턴스생성방법 http://ojc.asia, http://ojcedu.com 1. JPAQuery 를직접생성하기 JPAQuery 인스턴스생성하기 QueryDSL의 JPAQuery API를사용하려면 JPAQuery 인스턴스를생성하면된다. // entitymanager는 JPA의 EntityManage

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리

More information

Interstage4 설치가이드

Interstage4 설치가이드 Interstage Application Server V501 Operation Guide Internet 1 1 1 FJApache FJApache (WWW (WWW server) server) - - file file - - 2 2 InfoProviderPro InfoProviderPro (WWW (WWW server) server) - - file file

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]

More information

예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 2

예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 2 예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 kkman@sangji.ac.kr 2 예외 (exception) 실행시간에발생하는에러 (run-time error) 프로그램의비정상적인종료잘못된실행결과 예외처리 (exception handling) 기대되지않은상황에대해예외를발생야기된예외를적절히처리 (exception handler) kkman@sangji.ac.kr

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

untitled

untitled 3 IBM WebSphere User Conference ESB (e-mail : ljm@kr.ibm.com) Infrastructure Solution, IGS 2005. 9.13 ESB 를통한어플리케이션통합구축 2 IT 40%. IT,,.,, (Real Time Enterprise), End to End Access Processes bounded by

More information

KYO_SCCD.PDF

KYO_SCCD.PDF 1. Servlets. 5 1 Servlet Model. 5 1.1 Http Method : HttpServlet abstract class. 5 1.2 Http Method. 5 1.3 Parameter, Header. 5 1.4 Response 6 1.5 Redirect 6 1.6 Three Web Scopes : Request, Session, Context

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1); void method() 2); void method1() public class Test 3); args) A 제 10 장상속 예제 1) ConstructorTest.java class Parent public Parent() super - default"); public Parent(int i) this("hello"); super(int) constructor" + i); public Parent(char c) this(); super(char) constructor

More information

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas

More information

슬라이드 1

슬라이드 1 NeoDeveloper 설치가이드 차례 1. 환경 3 2. 설치 3 2.1 웹서버설치 3 Tomcat 7 3 JDK 1.6 3 2.2 NeoDeveloper 설치 3 Neo Developer 서버구성 3 Demo용 User Application 구성 4 Neo Developer 서버 Data File 4 Client 개발 Tool 설치 4 3. 설정 5 3.1

More information

서현수

서현수 Introduction to TIZEN SDK UI Builder S-Core 서현수 2015.10.28 CONTENTS TIZEN APP 이란? TIZEN SDK UI Builder 소개 TIZEN APP 개발방법 UI Builder 기능 UI Builder 사용방법 실전, TIZEN APP 개발시작하기 마침 TIZEN APP? TIZEN APP 이란? Mobile,

More information

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_20160320.pptx

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_20160320.pptx (보험TM) 소개서 2015.12 대표전화 : 070 ) 7405 1700 팩스 : 02 ) 6012 1784 홈 페이지 : http://www.itfact.co.kr 목 차 01. Framework 02. Application 03. 회사 소개 01. Framework 1) Architecture Server Framework Client Framework

More information

JAVA Bean & Session - Cookie

JAVA Bean & Session - Cookie JAVA Bean & Session - Cookie [ 우주최강미남 ] 발표내용소개 자바빈 (Java Bean) 자바빈의개요 자바빈의설계규약 JSP 에서자바빈사용하기 자바빈의영역 세션과쿠키 (Session & Cookie) 쿠키의개요 쿠키설정 (HTTP 서블릿 API) 세션의개요 JSP 에서의세션관리 Java Bean Q. 웹사이트를개발한다는것과자바빈?? 웹사이트라는것은크게디자이너와프로그래머가함께개발합니다.

More information

untitled

untitled Memory leak Resource 力 金 3-tier 見 Out of Memory( 不 ) Memory leak( 漏 ) 狀 Application Server Crash 理 Server 狀 Crash 類 JVM 說 例 行說 說 Memory leak Resource Out of Memory Memory leak Out of Memory 不論 Java heap

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

JMF3_심빈구.PDF

JMF3_심빈구.PDF JMF JSTORM http://wwwjstormpekr Issued by: < > Revision: Document Information Document title: Document file name: Revision number: Issued by: JMF3_ doc Issue Date:

More information

Microsoft Word - Jeus_System_Architecture.doc

Microsoft Word - Jeus_System_Architecture.doc 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

More information

[Brochure] KOR_LENA WAS_

[Brochure] KOR_LENA WAS_ LENA Web Application Server LENA Web Application Server 빠르고확장가능하며장애를선대응할수있는운영중심의고효율차세대 Why 클라우드환경과데이터센터운영의노하우가결집되어편리한 관리기능과대용량트랜잭션을빠르고쉽게구현함으로고객의 IT Ownership을강화하였습니다. 고객의고민사항 전통 의 Issue Complexity Over

More information

Microsoft PowerPoint - 18-DataSource.ppt

Microsoft PowerPoint - 18-DataSource.ppt 18 장 : JDBC DataSource DataSource JDBC 2.0의 javax.sql 패키지에포함되어도입됨 DataSource 인터페이스는데이터베이스커넥션을만들거나사용하는데좀더유연한아키텍처를제공하기위해도입됨 DataSource를이용할경우, 클라이언트코드는한줄도바꾸지않고서도다른데이터베이스에접속할수있도록해줌 즉 DataSource 는커넥션상세사항들을캡슐화

More information

歯Writing_Enterprise_Applications_7_JunoYoon.PDF

歯Writing_Enterprise_Applications_7_JunoYoon.PDF Writing Enterprise Applications with Java 2 Platform, Enterprise Edition - part7 JSTORM http://wwwjstormpekr Revision: Document Information Document title: Writing Enterprise

More information

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V Mobile Service > IAP > Android SDK IAP SDK TOAST SDK. IAP SDK. Android Studio IDE 2.3.3 Android SDK Version 2.3.3 (API Level 10). Name Reference Version License okhttp http://square.github.io/okhttp/ 1.5.4

More information

단계

단계 TIBERO-WAS 연동 Guide 본문서에서는 Tibero RDBMS 에서제공하는 JDBC 통한 JEUS, WEBLOGIC 등다양한 WAS (Web Application Server) 제품과의연동방법을알아본다. Contents 1. Connection Pool 방식... 2 2. JEUS 연동... 3 2.1. JEUSMain.xml 설정 (Thin 방식

More information

DBMS & SQL Server Installation Database Laboratory

DBMS & SQL Server Installation Database Laboratory DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.

More information

5장.key

5장.key JAVA Programming 1 (inheritance) 2!,!! 4 3 4!!!! 5 public class Person {... public class Student extends Person { // Person Student... public class StudentWorker extends Student { // Student StudentWorker...!

More information

10.ppt

10.ppt : SQL. SQL Plus. JDBC. SQL >> SQL create table : CREATE TABLE ( ( ), ( ),.. ) SQL >> SQL create table : id username dept birth email id username dept birth email CREATE TABLE member ( id NUMBER NOT NULL

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

9장.예외와 단정

9장.예외와 단정 예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 [2/28] 예외 (exception) 실행시간에발생하는에러 (run-time error) 프로그램의비정상적인종료잘못된실행결과 예외처리 (exception handling) 기대되지않은상황에대해예외를발생 야기된예외를적절히처리 (exception handler) [3/28] 단정 (assertion)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 1 2 3 4 5 6-2- - - - - - -3- -4- ( Knowledge Cube, Inc. ) // www.kcube.co.kr -5- -6- (KM)? - Knowledge Cube, Inc. - - Peter Drucker - -7- KM Context KM Context KM Context KM Context KM Context KM KM KM

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 웹서버프로그래밍 2 JSP 개요 01. JSP 개요 (1) 서블릿 (Servlet) 과 JSP(Java Server Page) 서블릿은자바를이용한서버프로그래밍기술 초기웹프로그래밍기술인 CGI(Common Gateway Interface) 를대체하기위해개발되었으나, 느린처리속도, 많은메모리요구, 불편한화면제어등의한계로 PHP, ASP 등서버스크립트언어등장 JSP

More information

FileMaker 15 ODBC 및 JDBC 설명서

FileMaker 15 ODBC 및 JDBC 설명서 FileMaker 15 ODBC JDBC 2004-2016 FileMaker, Inc.. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc.. FileMaker WebDirect FileMaker, Inc... FileMaker.

More information

FileMaker ODBC 및 JDBC 가이드

FileMaker ODBC 및 JDBC 가이드 FileMaker ODBC JDBC 2004-2019 FileMaker, Inc.. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker, FileMaker Cloud, FileMaker Go FileMaker, Inc.. FileMaker WebDirect FileMaker,

More information

.

. JEUS 6 & WebtoB 4.1 관리자 2015.09 Ⅰ Ⅱ Ⅲ JEUS 설정 WebtoB 연동설정 Tibero 연동설정 Ⅰ JEUS 설정 컨테이너생성 Application 디플로이 컨테이너생성 관리자화면접속 http://ip-address:9744/webadmin 접속 ID : administrator PW : 설치단계에서설정한관리자암호 3/36 컨테이너생성

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Synergy EDMS www.comtrue.com opyright 2001 ComTrue Technologies. All right reserved. - 1 opyright 2001 ComTrue Technologies. All right reserved. - 2 opyright 2001 ComTrue Technologies. All right reserved.

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

thesis

thesis ( Design and Implementation of a Generalized Management Information Repository Service for Network and System Management ) ssp@nile nile.postech.ac..ac.kr DPE Lab. 1997 12 16 GMIRS GMIRS GMIRS prototype

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 9 장생성자와접근제어 이번장에서학습할내용 생성자 정적변수 정적메소드 접근제어 this 클래스간의관계 객체가생성될때초기화를담당하는생성자에대하여살펴봅니다. 생성자 생성자 (contructor): 객체가생성될때에필드에게초기값을제공하고필요한초기화절차를실행하는메소드 생성자의예 class Car { private String color; // 색상

More information

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드] - Socket Programming in Java - 목차 소켓소개 자바에서의 TCP 프로그램작성방법 주요클래스와메소드 HTTP 프로토콜을이용한예제 에코프로그램 Q/A 에코프로그램 - EchoServer 에코프로그램 - EchoClient TCP Programming 1 소켓소개 IP, Port, and Socket 포트 (Port): 전송계층에서통신을수행하는응용프로그램을찾기위한주소

More information

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 2012.11.23 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Document Distribution Copy Number Name(Role, Title) Date

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가 혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가웹페이지내에뒤섞여있어서웹페이지의화면설계가점점어려워진다. - 서블릿이먼저등장하였으나, 자바내에

More information

Semantic Consistency in Information Exchange

Semantic Consistency in Information Exchange 제 6 장제어 (Control) 6.1 구조적프로그래밍 (Structured Programming) 6.2 예외 (Exceptions) Reading Chap. 7 숙대창병모 1 6.1 구조적프로그래밍 숙대창병모 2 Fortran 제어구조 10 IF (X.GT. 0.000001) GO TO 20 11 X = -X IF (X.LT. 0.000001) GO TO

More information

1

1 1 1....6 1.1...6 2. Java Architecture...7 2.1 2SDK(Software Development Kit)...8 2.2 JRE(Java Runtime Environment)...9 2.3 (Java Virtual Machine, JVM)...10 2.4 JVM...11 2.5 (runtime)jvm...12 2.5.1 2.5.2

More information

기술자료

기술자료 1 쪽중 1 쪽 WebLogic Server 8.1 Tutorials 03 - 리소스 (JDBC, JMS 등 ) 설정 본문서에서는 MedRec 애플리케이션을디플로이하고서비스하기위해서필요한 WebLogic Server 의리소스들을설정하는방법에대하여설명할것이다. 1. JDBC(Java Database Connectivity) Connection Pool 과 Data

More information

Corporate PPT Template

Corporate PPT Template Tech Sales Consultant Oracle Corporation What s New in Oracle9iAS Forms? Why upgrade Oracle Forms to the WEB? Agenda Oracle9i Forms Web Oracle9i Forms Oracle9i Forms Oracle9i Forms What s NEW in Oracle

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information