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

Similar documents
개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다.

개발및운영 Eclipse 를이용한 ANT 활용방법

튜닝및모니터링 HP JVM 튜닝옵션

교육2 ? 그림

[JEUS 7] eclipse plug-in 연동 1. 개요 Eclipse 와 JEUS 7 연동시필요한 plug-in 제공및환경설정에관한가이드제공하여 Eclipse 에서 JEUS 7 기동및 종료테스트할수있는방법을기술하였습니다. 2. Plug-in 설치 2.1 [Step

기술교육 SSL 설정및변환방법

歯Writing_Enterprise_Applications_2_JunoYoon.PDF

개발및운영 Tibero DB Link (Tibero To Oracle) - Local 방식

목차 1. 개요 현상 문제분석 문제해결

목차 JEUS JNLP Client Sample 가이드 JNLP 란 JNLP의이점 TEST TEST 환경 TEST Sample sample application 셋팅 (ser

Interstage5 SOAP서비스 설정 가이드

설치및환경설정 JEUS Thread State Notify 설정

ÃÖÁ¾PDF¿ë

목차 1. 노드매니저종류 Java Type SSH Type 노드설정파일및로깅 nodes.xml jeusnm.properties <servername>.properties...

Intro to Servlet, EJB, JSP, WS

PowerPoint 프레젠테이션

튜닝및모니터링 OS 별 TCP Recommend Parameter for WebtoB/JEUS

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

개발및운영 Tibero Perl 연동

Chap12

Network Programming

歯Writing_Enterprise_Applications_7_JunoYoon.PDF

Tmax

rmi_박준용_final.PDF

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

제11장 프로세스와 쓰레드

KYO_SCCD.PDF

JavaGeneralProgramming.PDF

Linux 권장커널파라미터 1. 커널파라미터별설명및설정방법 1.1 nofile ( max number of open files ) 설명 : 지원되는열린파일수를지정합니다. 기본설정이보통대부분의응용프로그램에대해충분합니다. 이매개 변수에설정된값이너무낮으면파일열기오류, 메모리

Microsoft Word - Enterprise Java Beans.doc

윈백및업그레이드 Tibero Flashback 가이드

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

09-interface.key

Microsoft PowerPoint - RMI.ppt

교육자료

No Slide Title

PowerPoint Presentation

ilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형

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

5장.key

Microsoft Word - AnyLink Introduction v3.2.3.doc

비긴쿡-자바 00앞부속

J2EE Concepts

07 자바의 다양한 클래스.key

SSL 접속테스트 본문서에서 WebtoB 가설치된디렉토리는 [WEBTOBDIR] 로표기하겠습니다.. 윈도우계열과리눅스 / 유닉스계열모두명령은동일하므로윈도우를기준으로설명하도록하겠습니다. 1. WebtoB 설정 1.1 Test 용인증서생성 SSL 접속테스트를위해 Webto

설치및환경설정 Tibero tbprobe 사용법과원격지포트체크

14-Servlet

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

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

Cluster management software

12-file.key

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

SSL(Secure Socket Layer) 과 TLS(Transport Layer Security) 개요 전자상거래가활발해지면서웹보안이매우중요해지고있으며, 최근정보통신망법의개정으로아무리소상공인이라 도홈페이지운영시개인정보를취급하고있다면아래와같은내용을조치하도록되어있습니다

JAVA PROGRAMMING 실습 08.다형성

04장

예제 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

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

FY2005 LIG

슬라이드 1

JMF2_심빈구.PDF

PowerPoint Presentation

Microsoft PowerPoint - 04-UDP Programming.ppt

Layout 1

PowerPoint Presentation

05-class.key

DocsPin_Korean.pages

자바 프로그래밍

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

H_AR_ P

중간고사

PowerPoint 프레젠테이션

JUNIT 실습및발표

int total = 0; for( int i=1; i<=5; i++ ) { for( int j=1; j<=i; i++ ) { total ++; System.out.println( total ); 대구분 : 객체와 Class 소구분 : 객체생성과사용 / Class 선언

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

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

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

어댑터뷰

J2EE & Web Services iSeminar

JMF3_심빈구.PDF

자바-11장N'1-502

about_by5

Design Issues

PowerPoint Presentation

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

Spring Boot/JDBC JdbcTemplate/CRUD 예제


PowerPoint 프레젠테이션

A Tour of Java IV

C# Programming Guide - Types

PowerPoint Presentation

No Slide Title

MasoJava4_Dongbin.PDF

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

1

2012-민간네트워크-05_중국

슬라이드 1

BTSK

OOP 소개

Interstage

Transcription:

개념정리및샘플예제 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에서사용하기... 7 1.2.1 sample source... 7 1.2.2 결과확인... 8 2. JEUS Deploy 환경및 tip... 8 2

JEUS EJB Session Bean 가이드 본문서는 sample source 위주의개발가이드이며 EJB 에대한 backgroupd 지식소개및개념정리는생략합니다. 1. stateful session bean 1. 메소드호출과정에서상태정보를유지합니다. 2. Session bean의상태정보는세션종료, 시스템다운, 네트워크장애시에는보존될수없습니다. 3. Client 가 stateful session bean 인스턴스를요청하면, 그 client 는 stateful 인스턴스에할당되고해당 client 의빈상태정보가관리됩니다. 4. 특정메소드가완료된이후에 stateful session bean 인스턴스를제거하려면 @Remove annotation 을사용합니다. 1.1 stateful sample 가이드 stateful 은 request 시에 bean 이존재여부와상관없이무조건 session 을새로생성합니다.(create 할때마다 new sessionid 를생성합니다.) 1.1.1 sample source 비즈니스로직 (CustomerRec.java) package test; import java.io.serializable; public class CustomerRec implements Serializable private String name; private int age; public CustomerRec() public CustomerRec(String name,int age) this.name=name; this.age=age; public void setname(string name) this.name=name; public void setage(int age) this.age=age; public String getname() return name; public int getage() return age; public boolean equals(object obj) if (obj instanceof CustomerRec) 3

CustomerRec rec=(customerrec)obj; if(name.equals(rec.name)&&age==rec.age) return true; return false; public int hascode() return name.hashcode()^age; public String tostring() return "name:"+name+""+", "+"age:"+age; create 부분 (HelloEJB.java) package test; import java.rmi.remoteexception; import javax.naming.namingexception; import javax.naming.initialcontext; import java.rmi.*; import javax.ejb.*; import java.lang.reflect.*; import java.util.arraylist; public class HelloEJB implements SessionBean private ArrayList arraylist; private String name; private SessionContext sessioncontext; public void ejbcreate(string name) System.out.println(">>>>>>>>>> ejbcreate"); this.name = name; public HelloEJB() arraylist=new ArrayList(); System.out.println(" 생성자 "); public void setsessioncontext(sessioncontext sessioncontext) this.sessioncontext=sessioncontext; System.out.println("setSessionContext()"); public void setcustomer(customerrec rec) arraylist.add(rec); public ArrayList getcustomerlist() return arraylist; 4

public void ejbremove() System.out.println("ejbRemove"); public void ejbactivate() System.out.println("ejvActivate"); public void ejbpassivate() System.out.println("ejbPassivate"); 인터페이스 (Hello.java) package test; import javax.ejb.*; import java.rmi.*; import java.util.arraylist; public interface Hello extends EJBObject public void setcustomer(customerrec rec) throws RemoteException; public ArrayList getcustomerlist() throws RemoteException; 인터페이스 (HelloHome.java) package test; import java.rmi.*; import javax.ejb.*; public interface HelloHome extends EJBHome Hello create(string name) throws RemoteException, CreateException; create 할때마다 session 이바뀌는지를확인하기위한 view(helloejb.jsp) <%@page import="javax.naming.*" %><%@page import="javax.rmi.*" %><%@page import="javax.ejb.*" %> <%@page import="test.hello" %> <%@page import="test.hellohome" %> <%@page import="test.customerrec" %> <%@ page import="java.util.*"%> <% String name = request.getparameter("name"); int age = Integer.parseInt(request.getParameter("age")); try System.out.println("############CREATE NEW EJB BEAN Context ctx = new InitialContext(); Object objref = ctx.lookup("test"); HelloHome home = (HelloHome) PortableRemoteObject.narrow(objref, HelloHome.class); Hello hello = home.create("wonyoung"); System.out.println("############Customer Data Input to Session 5

hello.setcustomer(new CustomerRec(name, age)); System.out.println("############Customer Data get from Session ArrayList arraylist = hello.getcustomerlist(); Iterator rs = arraylist.iterator(); while(rs.hasnext()) String result=rs.next().tostring(); System.out.println(result+"<br>"); out.println(result+"<br>"); //System.out.println(session.getId()); //System.out.println("############EJB Bean input to http-session //session.setattribute("helloejb", hello); catch(exception e) System.out.println("EJB LOG - Exception"); e.printstacktrace(); %> 1.1.2 결과확인 Get 방식으로파라미터전달 ( 호출 ) 새로고츰 (f5) 를이용해서여러번요청을하고, JEUS Log 를확인합니다. -> create 할때마다 sessionid 가변경되는것을확인할수있습니다. [2016.01.14 16:32:56][1][b393] [container1-39] [EJB-4495] [module name : wonyoung#statefulejb, bean name : test, session id : Ja5KHA4YMwZjhlMUetjDEqaOT0ezbD11QtrqiFYXhPEqxM8eOD2m5vOnxPnfFQSM] try to call ejb passivate method of ejb bean ejbpassivate [2016.01.14 16:33:06][1][b393] [container1-47] [EJB-4495] [module name : wonyoung#statefulejb, bean name : test, session id : lxmtab2hreedhuuiehxpamx9faurrl3zqtxstej6fmcvbelgoyxaotoukoywvqfa] try to call ejb passivate method of ejb bean ejbpassivate [2016.01.14 16:33:06][1][b393] [container1-47] [EJB-4495] [module name : wonyoung#statefulejb, bean name : test, session id : viu663fmfd6ye3tje4py1bkhaysnte8fqe9ciwsnr005wcyeorgrwaiu9kfvs1d0] try to call ejb passivate method of ejb bean ejbpassivate 6

1.2 http session 에서사용하기. 위에서처럼 EJB stateful 은무조건 new session 으로 create 되는것은 EJB Spec 에의거한정상작동입니다. 하지만업무 에서는기존재요청시 session 에접근해야하는경우가많이있습니다. 이럴때는 create 된 session bean 을 http session 에담아서사용하면됩니다. 1.2.1 sample source 기존 helloejb.jsp 에서 session 을 setattribete() 하고, 다른 jsp 에서해당 session 을불러오는 sample 입니다. -> 위의 helloejb.jsp 에서다음구문을추가합니다. System.out.println("############EJB Bean input to http-session session.setattribute("helloejb", hello); http session 에담긴 attribute 를 get 하는 sample (getejb.jsp) <%@page import="test.hello" %> <%@page import="test.hellohome" %> <%@page import="test.customerrec" %> <%@ page import="java.util.*"%> <% try System.out.println("############ACCESS already created EJB BEAN Hello hello = (Hello)session.getAttribute("helloejb"); System.out.println("############Customer Data get from Session ArrayList arraylist = hello.getcustomerlist(); Iterator rs = arraylist.iterator(); while(rs.hasnext()) String result=rs.next().tostring(); System.out.println(result+"<br>"); out.println(result+"<br>"); System.out.println(session.getId()); //hello.remove(); // //System.out.println("EJB LOG - result and remove()"); catch(exception e) System.out.println("EJB LOG - Exception"); e.printstacktrace(); %> 7

1.2.2 결과확인 Hellojeb.jsp 를호출하여 setattribute() 하고, getejb.jsp 를호출하여 getattribute() 합니다. -> 이때동일한 value 가호출되는것을알수있습니다. JEUS log 에서 seesionid 를확인합니다. (log buffer 때문에 hellojeb.jsp 에서 1111 로식별하고 getejb.jsp 에서 2222 로식 별하겠습니다.) WYc7CYcHHNwgKtniHrL5SZkbnQrHfluEQs54exQY3tqRN8NiOcFRr1IPYC9WTxtU 2. JEUS Deploy 환경및 tip <application> <name>wonyoung</name> <path>/user/wonyoung/wonyoung</path> <deployment-type>ear</deployment-type> <web-component> 8

<uri>ejbtest</uri> </web-component> <ejb-component> <uri>statefulejb.jar</uri> </ejb-component> <deployment-target> <target> <engine-container-name>infrasvr_container1</engine-container-name> </target> </deployment-target> <classloading>isolated</classloading> <fast-deploy>false</fast-deploy> </application> </jeus-system> stateful 만 sample 을작성하였지만 stateless 은동일소스에서각 jar파일의 META-INF 의 ejb-jar.xml 의 <session><session-type> 만변경해주면됩니다. stateless 는 bean이없을경우새로생성하고존재하면그 bean을그대로이용하기때문에 1.1.2 에서결과테스트를하게되면 arraylist 에 add로 data를쌓게되면계속추가가됩니다. 즉, 새로고침할때마다 list가늘어나서모든세션들이하나의 list에쌓이게됩니다. 9

Copyright 2013 TmaxSoft Co., Ltd. All Rights Reserved. TmaxSoft Co., Ltd. Trademarks Tmax, WebtoB, WebT, JEUS, ProFrame, SysMaster and OpenFrame are registered trademarks of TmaxSoft Co., Ltd. Other products, titles or services may be registered trademarks of their respective companies. Contact Information TmaxSoft can be contacted at the following addresses to arrange for a consulting team to visit your company and discuss your options for legacy modernization. Korea - TmaxSoft Co., Ltd. Corporate Headquarters 272-6 Seohyeon-dong, Bundang-gu, Seongnam-si, South Korea, 463-824 Tel : (+82) 31-8018-1708 Fax : (+82) 31-8018- 1710 Website : http://tmaxsoft.com U.S.A. - TmaxSoft Inc. 560 Sylvan Avenue Englewood Cliffs, NJ 07632, USA Tel : (+1) 201-567-8266 Fax : (+1) 201-567- 7339 Website : http://us.tmaxsoft.com Japan TmaxSoft Japan Co., Ltd. 5F Sanko Bldg, 3-12-16 Mita, Minato-Ku, Tokyo, 108-0073 Japan Tel : (+81) 3-5765-2550 Fax: (+81) 3-5765- 2567 Website : http://jp.tmaxsoft.com China TmaxSoft China Co., Ltd. Room 1101, Building B, Recreo International Center, East Road Wang Jing, Chaoyang District, Beijing, 100102, P.R.C Tel : (+86) 10-5783-9188 Fax: (+86) 10-5783- 9188(#800) Website : http://cn.tmaxsoft.com China(JV) Upright(Beijing) Software Technology Co., Ltd Room 1102, Building B, Recreo International Center, East Road Wang Jing, Chaoyang District, Beijing, 100102, P.R.C Tel : (+86) 10-5783-9188 Fax: (+86) 10-5783- 9188(#800) Website : www.uprightsoft.com TD-JSDB-F0114001 10