블로그 이미지
G-JS

카테고리

분류 전체보기 (48)
# Notice (1)
# Diary (23)
# Photo (0)
# Reviews (3)
# Smile (8)
# Cartoon (2)
# Seminar (2)
# 끄적끄적 (4)
# Java (2)
# JSP (1)
#XML (0)
# EJB (0)
#이것저것 (2)
#Tmax 9기 (0)
# Tmax 9th 제품교육 (0)
Total21,247
Today0
Yesterday0

달력

« » 2018.09
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

공지사항

태그목록

#Exception

#이것저것 / 2008.08.06 15:45

Exception 발생경로

빈 - Application exception

빈 - System exception

컨테이너 - Application exception

컨테이너 - System exception

스텁 - Application exception

스텁 - System exception


Exception 발생시 컨테이너가 하는 일



Application Exception

System Exception

클라이언트 복구

복구 시도 가능

복구 불가

트랜잭션 상태

트랜잭션 계속 진행

setRollbackOnly()로 중지 시킬수 있음.

자동 롤백

빈 인스턴스

인스턴스 유지

인스턴스 파괴

로그 기록

미기록

기록

CreateException

RemoveException

FinderException

ObjectNotFoundException

DuplicateKeyException


AccountBalanceException

BadQueryArgsException

BookMappingException

Exception

RemoteException(원격클라이언트)

EJBException(로컬클라이언트)

IllegalStateException

TransactionRequiredException

NoSuchObjectException

ArrayIndexOutOfBoundsException

NullPointerException

RuntimeException

컴파일러

확인 여부 및

기타 규칙


모든 ApplicationException은 확인 예외이며 RemoteException 을 확장한 것은 제외

RemoteException은 확인 예외고 나머지는 모두 RuntimeException이거나 그 서브 클래스

구분법

RemoteException을 제외한 컴파일러에서 확인되는 모든 예외

컴파일 과정에서 발견되지 않고 실행과정 중에 발생하는 에러


Exception 발생경로

exception.jpg


일반적인 시스템 예외

로컬 클라이언트와 빈에서 받을 수 있는 미확인 예외

ex2.jpg 



원격 클라이언트에서만 받을 수 있는 예외 (확인 예외)

ex3.jpg 



출처 : http://zzru.springnote.com/pages/1411254

Posted by G-JS

EJB 트랜잭션?

  • 원자적 단위 자체를 완료(commit)하거나, 롤백(rollback)하는 것으로
    작업이 제대로 끝나거나 아예 아무 일도 일어나지 않았던 것처럼 되는 것을 말한다.

예제)

고객의 출금 신청

고객의 잔액 확인

고객에게 현금 지급

고객의 잔액에서 출금액 감소


트랜잭션의 네가지 특징(ACID)

  • A(Atomic , 원자성)

전체가 성공적으로 끝나거나 아무일이 없었던 것처럼 처음 상태를 유지해야 한다

  • C(Consistent, 일관성)

성공 여부에 상관없이 데이터는 비즈니스 로직 면에서 볼 때 일관되게 유지되어야 한다.

  • I(Isolated, 격리)

각각의 트랜잭션 상태에 영향을 미치면 안된다

다른 트랜잭션의 자원을 침범하지 못한다

  • D(Durable, 영속성)

완료된 트랜잭션의 변경 사항은 어떠한 일이 있더라도 손실되지 않는다


 트랜잭션을 만드는 방법

  • 트랜잭션 코드를 빈에 집어 넣는 방법(BMT)

<transaction-type>Bean</transaction-type>

UserTransaction ut = context.getUserTransaction();

ut.begin();

//트랜잭션 관련 코드

ut.commit();

  •  BMT에서 하지 말아야 할 일

    - BMT 빈에서는 현재 트랜잭션을 끝내기 전에 새로운 트랜잭션을 시작하면 안된다.

    - BMT 무상태 세션 빈, 또는 메시지 구동 빈에서는 트랜잭션을 끝내지 않은 채로 트랜잭션 메소드를 종료 할 수 없습니다.
    - BMT 트랜잭션은 항상 단방향입니다.
       BMT 트랜잭션이 CMT 빈으로 전파되거나 BMT->CMT로 전파 될 수는 있지만 CMT->BMT로 전파될 수는 없습니다.
    - BMT 빈에서는 다른 빈의 트랜잭션을 절대로 사용하지 않습니다. ( 호출된 트랜잭션은 보류됩니다)


  • 배치 기술자에게 트랜잭션을 선언하는 방법(CMT)

<transaction-type>Container</transaction-type>

<method>

<ejb-name>MyBean</ejb-name>

<method-name>bar</method-name>

</method>

<trans-attribute>Required</trans-attribute>


트랜잭션 관련 인터페이스

  • UserTransaction <- 빈에서 사용

begin()

commit()

getStatus()

rollback()

setRollbackOnly()

setTransactionTimeout()

  • EJBContext

//BMT 빈에서만 쓸수 있는 것

getUserTransaction()

 //BMT와 CMT 모두 쓸수 있는것

getCallerPrincipal()

getEJBHome()

getEJBLocalHome()

isCallerInRole()

 //CMT빈에서만 쓸 수 있는 것

setRollbackOnly()

getRollbackOnly()


setRollbackOnly()

  • BMT 빈에서,,

BMT빈에서 setRollbackOnly()메소드를 호출하면 트랜잭션은 트랜잭션에 들어가기 이전 상태로 모든 상태를 되돌린다.

  • CMT 빈에서,,

 CMT빈에서 setRollbackOnly()를 써서 컨테이너에게 그 트랜잭션이 완료되면 안된다는 것을 알려 줄수 있다.

 setRollbackOnly()을 만난다고 그 순간 트랜잭션을 끝내는 것은 아니지만, 실제로 트랜잭션을 끝내야 할 때가 되었을 때 commit하지 못하게 한다.

  • 트랜잭션의 종료,,

시스템예외가 던져질 때

트랜잭션을 시작한 CMT 메소드가 종료될 때

BMT의 경우 코드에서 commit()이나 rollback()을 호출 했을 때


getRollbackOnly()

  • 트랜잭션은 setRollbackOnly()를 만나도 바로 종료되지 않는다.
    그때 getRollbackOnly()를 써서 현재 트랜잭션이 setRollbackOnly()를 만났었는지 확인할 수 있다.

사용예)

if ( !getRollbackOnly() ) {

정상적인 처리 내용

}

  • BMT 빈에서는..

 BMT빈에서는 getRollbackOnly() 대신 getStatus()를 사용한다.



BMT의 장단점

단점

BMT 빈을 만들면 그 빈은 다른 트랜잭션 안에 포함 될 수가 없다.

장점

트랜잭션 영역을 줄일 수 있다

한클라이언트로 부터 같은 상태유지 세션 빈의 메소드를 여러 번 호출할 때, 트랜잭션을 여러 호출에 걸쳐서 열어 둘 수 있다

트랜잭션 완료 상태와 메시지 수령 샅래를 구분할 수 있다



CMT 속성

  •  Required : 메소드가 기존의 트랜잭션 컨텍스트 내에서 호출되면 메소드는 기존의 트랜잭션 내에서 실행됩니다.
    트랜잭션이 없으면 컨테이너에서 새로운 트랜잭션을 시작합니다.

  • RequiresNew : 메소드는 항상 새로운 트랜잭션에서 실행됩니다. 기존 트랜잭션 컨텍스트가 있으면 호출 한 쪽의 트랜잭션은 이 메소드가 끝날 때까지 보류됩니다.

  • Mandatory : 위험! 속성이 Mandatory이면 기존 트랜잭션이 반드시 있어야만 합니다.
    트랜잭션 컨텍스트가 없는 상태에서 메소드가호출되면 컨테이너에서 예외를 던집니다.

  • Supports : 기존 트랜잭션 컨텍스트가 있는 상황에서 메소드가 호출되면, 메소드가 그 컨텍스트 내에서 실행됩니다.
    트랜잭션이 없으면 메소드는 '미지정 트랜잭션 컨텍스트(unspecified transaction context)'에서 실행됩니다.

  • NotSupported :  메소드가 기존 트랜잭션에서 호출되면 호출한 쪽의 트랜잭션이 보류됩니다.
    기존 트랜잭션이 있는지 여부와 상관없이, 이 메소드는 '미지정 트랜잭션 컨텍스트'에서 실행됩니다.

  • Never :  "기존 트랜잭션이 없어야 함"을 의미합니다.
    기존 트랜잭션 컨텍스트가 있는 상태에서 메소드가 호출되면 컨테이너에서 예외를 던집니다.
    기존 트랜잭션이없으면 이 메소드는 '미지정 트랜잭션 컨텍스트'에서 실행됩니다.

reference : http://zzru.springnote.com/pages/1411582

Posted by G-JS

#08/06/21 토요일..無

# Diary / 2008.06.21 19:35

항상 주말이면 느끼는 것은 "날씨 참 좋네.."라는 것과 이런날에 도서관을 가야한다는 것 ..

오늘은 유난히 사람 많은곳엔 가고싶진 않았다.

그냥 혼자만 있어서 혼자 생각도 하고, 공부도 하고 그렇게 조용히 지내고 싶었다.

마침 집에 사람들도 없고..

지금 내가 하는 것, 앞으로 하고 싶은 것, 지금 나는 행복한가?? 이런것에 대한 막연한 생각들..

생각을해도 답이 나오지 않았다. 그만큼 내가 많이 혼란스럽다는 걸 다시한번 느꼈다.

괜시리 이것저것 정리하다가 문득 슬퍼졌다.

단 한번뿐인 인생에 황금기인 20대에 행복한 삶을 살지 않는다면 나중엔 분명 후회가 남을것 같다.

슬퍼하는건 오늘까지만 ..

내일은 내일의 태양이 뜬다고 했는데.. 내일은 좀 더 활기차게 행복하게 ♡

 
 
Posted by G-JS

늦잠잤더니 지각하겠다~ 라면서 아침에 정신없이 뛰어다녔다. -_-;;

오늘따라 버스도 안오고 전철은 겨우겨우 타고 가면서 '아침 출근길이 다 그렇지 뭐~'라고

대소롭지 않게 생각하고 2호선을 갈아 탔을떄..

"환경 도우미"라는 초록색 조끼를 입은 한쪽 다리를 약간 쩔뚝거리면서 선반위에 신문들을 수거해 가시는

할머니가 보였다. 밀고 다니는 어떤 통 안에는 수거한 신문이 이미 꽉 차있었다.

그런데도 또 신문을 수거하시느냐 수거통이 바퀴때문에 저절로 움직이게 되었을때..

갑자기 어떤 한 남자분께서 잡아 주시고 신대방쪽에 지하철 문이 열리자 내리시는 할머니의 통을 내려줬다.

그 광경을 보고 그 남자분의 용기있는 행동이  대단하기도 했고, 한편으론 내 자신이 너무 부끄러웠다.

누군가를 돕는 다는건 나에게도 뿌듯하고 좋은일일 것이다.

단지 머리만이 아닌 행동으로 나서서 하기란 쉽지않다. 나 역시 "신문 수거 하실때 나도 좀 도와드릴껄 .."이라고 후회만 뿐..

남을 돕는 일에 좀 더 익숙해지자!

하루에 좋은일 하나씩!! ^ㅡ^

Posted by G-JS


사용자 삽입 이미지










<Java Technology Seminar>
JavaOne 2008 Wrap-up 세미나


올해도 어김없이 자바 개발자 최대 행사인 JavaOne이 지난 5월 미국 샌프란시스코에서 개최되었습니다.
자바의 최신 소식 / 하이라이트를 개발자 여러분들과 공유하고자 한국 썬과 JCO 공동 주최로 
Java Technology Seminar : JavaOne2008 Wrap-up 을 개최합니다.

관심있는 개발자 여러분의 많은 참여바랍니다.



1. 행사 일시 및 장소

 - 일시 : 2008년 6월 21일(토) 오후 12:30 ~ 18:10
 - 장소 : 이화삼성 교육문화관(이화여대 내) 103호
             >>약도보기



2. 행사 일정

사용자 삽입 이미지




















3. 행
사 등록 및 문의

 - 좌석이 한정되어 있으니 반드시 아래 웹사이트를 통해 등록해 주시기 바랍니다.
 - 등록웹사이트 : http://sun.veritasmedia.co.kr/company/080605_javaseminar.html
 - 문의 : 행사 사무국  + Tel : 3446-3880  + E-mail : sun21@citocomm.com


4. 행사 안내

 - 본 행사는 무료입니다.
 - 행사 후 설문지를 작성하여 제출하시는 분께는 소정의 기념품을 드립니다. 
 - 주차는 지원되지 않으니 대중교통을 이용해주시기 바랍니다.
사용자 삽입 이미지

출처 : http://sdnkorea.com/blog/584  한국 썬 개발자 네트워크



=====================================================================================================
난 이미 신청 했다능 @.@
Posted by G-JS

# 삐에로...

# Diary / 2008.06.08 21:16

나는 얼마나 솔직한 사람인가????

참 .. 어려운 질문 같다..

예전 같았으면 아무 고민없이 단번에 'Yes'라고 대답할 수 있었겠지만,

그만큼 더 많이 커버린걸까? 아님 현실에 적응해 가는걸까?

마치.......누군가 나에게 "너 괜찮니? 별일없지?" 라고 물었을 때..

"응~괜찮아 ~ " 라면서 실없이 웃고 만다..

누군가에 맞춰가기 위해서 혹은 맞춰야 한다는 강박관념 때문에 나는 나 자신에게 솔직하지 못한게 아닌가..

문득 이런생각이 든다..

나만의 스타일, 무언가를 맞추기 위해서라기 보단 있는 자체의 내 모습! 나!

그러기 위해선 먼저 나 자신에게 솔직해 져야겠다!

더 나은 나를 위해서 한걸음 더 도약하기 위한 첫번째!
Posted by G-JS

# 08/05/26 월요일..

# Diary / 2008.05.26 13:07
인생에 휴식이 필요할 때 ....
Posted by G-JS

티스토리 툴바