Know/DATABASE

IBM WebSphere 5.0 데이타베이스 연결 설정법

Marine™ 2005. 6. 23. 10:50
반응형
IBM WebSphere 5.0 데이타베이스 연결 설정법

EAR 패키징 할 때, 데이타소스를 "자원참조"에 등록하여 사용하지 않으면,

(1) 항상 "공유"데이타소스만 사용하게 됩니다. 공유데이타소스라함은, 개발자의 코드에서
conn.close() 를 하여도, 그 시점에 free connection pool로 곧바로 돌아가는 것이
아니라, Servlet/JSP가 모두 끝난 시점에서야 돌아갑니다.
좀더 정확한 표현은 Global Transaction이 involve되었을 경우, tx.commit/rollback
시점에 pool로 돌아갑니다. 그렇지 않을 경우는 해당 User Thread가 끝나는 시점에
pool로 돌아갑니다.
따라서, 일반적인 경우, "비공유 데이타소스"를 사용할 것을 권합니다.

(2) 또한, jdbc connection 의 Transaction Isolation level을 유일하게 지정할 수 있는
곳은 EAR패키징 시점에 데이타소스를 등록하는 곳에서 "IBM확장"탭 부분에서 할 수
있답니다.

위 두가지 이유만으로도, 아래처럼 EAR패키징 시점에 데이타소스를 등록하여 사용치 않으면
안될 충분한 사유가 될 것입니다.



1. EAR 패키징 하기

본 문서에 첨부한 lwy.ear 파일을 적당한 곳에 다운받아 둔 후, 아래와 같이 AAT(
Application Assembly Tool)을 기동하여 열어보세요.





EAR -> 웹모듈 -> lwy.war -> 자원참조 부분에서 데이타소스를 등록할 수 있습니다.

(1) [이름]은 매우 중요합니다. 예를 들어, 이곳에 "jdbc/UnsharedDS"라고 이름이 등록되어
있다면, 이를 사용하는 어플리케이션 소스 코드에서는 다음과 같이 JNDI lookup을
하게 됩니다.

Connection conn = null;
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/UnsharedDS");
conn = ds.getConnection();
...
}
finally {
if ( conn != null ) try { conn.close();}catch(Exception e){}
}

(2) [유형]은 당연히 javax.sql.DataSource 로 선택해야겠지요.

(3) [인증]은 Container로 하게 되면, 웹스피어 관리콘솔상에서 J2C인증데이타를
생성하여 이곳에 해당 데이타베이스 접속을 위한 DB_USER 및 DB_Password를
설정할 수 있습니다.

(4) 그 다음에 있는 [공유범위] 항목이 본 문서를 작성하게 만든 핵심적인 항목인데,
Servlet/JSP에서 일반적으로 사용되는 DB 라면, 반드시 "공유불가능"을 선택하십니요.
그 이유는 본 문서의 서두와 뒷 후반에 언급된 ds5.jsp 소스내에 있는 주석을
참고하세요.

다음은 Transaction Isolation Level 설정입니다.



이곳에서 유일하게 Transaction Isolation Level을 지정할 수 있다는 것을 잊지 마세요.
DBA와 그리고, 응용어플리케이션의 비즈니스로직을 전반적으로 이해하는 분과 논의하여
이 항목을 설정하십시요. 특별히 고민이 없다면(?), 그냥 default인 "트렌젝션 없음"을
선택할 수 있습니다. 설정가능한 TX level은 다음과 같습니다.
(1) TRANSACTION_NONE (default)
(2) TRANSACTION_READ_UNCOMMITTED
(3) TRANSACTION_READ_COMMITTED
(4) TRANSACTION_REPEATABLE_READ
(5) TRANSACTION_SERIALIZABLE



"바인딩" 탭에 지정하는 부분은 (참으로 저를 헛갈리게한 항목인데), 임의의 이름을
아무렇게나 적어주면 됩니다. JNDI 이름이라, 뭔가 중요하게 사용될 듯 싶지만, 사실은
순전히 EAR을 Deploy할 때, 구별하기 위한 것으로만 사용됩니다. (응용어플리케이션
소스 코드에서는 앞서 언급했 듯 "이름" 부분의 항목을 lookup 시 사용하게 됩니다.)


기타 샘플 및 모니터링을 위한 각종 유용한 샘플들을 lwy.ear에 담아 두었습니다.







2. 기존 샘플들 삭제하기

웹스피어 설치시에 자동으로 설치되는 DefaultApplication.ear, 아주 귀찮은
존재입니다. 과감히 지워버리자구요.

NOTE: 만약, DeaultApplication.ear 디렉토리에 추가된 개발자 소스가 있다면,
반드시 backup 받아 둔 후, 본 작업을 진행하십시요. DefaultApplication.ear를
설치제거하면, 해당 디렉토리가 모두 날아갑니다.



adminconsole 및 filetransfer(ND버전시)은 절대 지우면 안됩니다.





가슴아프다구요, 걱정마세요. 없으니만 못합니다.




3. 데이타 소스, 웹스피어 관리콘솔에서 생성/등록하기

웹스피어 관리콘솔에서 접속하기를 원하는 DB를 위해 데이타소스를 만드십시요.
저의 경우, "jdbc/DB2UDB"라는 JNDI명으로 등록해 두었습니다.
(요건, 다음 기회에 적겠습니다. 대부분 아시는 내용이기도 하고....)



4. 새로운 EAR 설치하기

본 문서에 첨부해 둔 lwy.ear 파일을 설치해 보겠습니다. lwy.ear 파일은
적당한 곳에 위치시킨 후, 다음과 같이 설치합니다.



아래와 같은 그 다음 단계에서 그냥 [다음]으로 진행합니다.


아래와 "단계1" 화면에 다소 주의해야 합니다.


(1) default로 그냥 빈칸으로 남겨두면, /installedApps/ 하부 디렉토리에
설치되게 됩니다. 테스트용이라면, 그대로 해도 상관없겠지만, 대부분의 실운영
환경에서는 별도의 디렉토리를 지정하게 될 것입니다.

(2) 이곳에 지정한 이름에다가 ".ear"이라는 확장자로 자동으로 붙어 디렉토리가
만들어 집니다. 주의해야 합니다. 만약 이곳에 lwy.ear 이라고 지정하면,
lwy.ear.ear 이라는 디렉토리가 생기게 됩니다.
결국, 최종 EAR이 설치되는 디렉토리는, 앞서 (1)에서 지정한 디렉토리 밑에
(2)에서 지정한 이름 + ".ear" 이 붙은 곳이 됩니다.
위의 경우, E:\WAS50\app\lwy.ear\ 이라는 디렉토리가 만들어 지는 것입니다.

(3) 클래스 reloading이 가능하게 하려면 지정하십시요. 실운영환경에서는 권장하지
않습니다.


다음 단계가 데이타소스 등록관점에서 매우 중요합니다. 만약, 웹스피어 관리콘솔에
하나 이상의 데이타소스를 기존에 등록해 두지 않았다면, 아래 화면의 drop-down
리스트에 아무것도 나타나지 않을 것입니다. 이 경우라면, 지금까지의 작업을 무시고,
먼저 데이타소스를 등록하고 다시 lwy.ear를 설치하도록 하십시요.



일일이 좌측에서 하나를 클릭 후, drop-down 리스트에서 매핑시킬 물리적인 데이타
소스를 선택하고 반드시 [적용]버튼을 누르십시요.



저의 경우는 jdbc/DB2UDB라는 이름으로 단 하나의 데이타소스만 웹스피어 관리콘솔에서
만들어 두었기에, EAR 패키징시에 임의로 등록한 4개의 데이타소스 참조항목을 모두
이것과 매핑시켰습니다.

다음 단계는 가상호스트를 매핑시키는 과정입니다. 대부분의 경우 그냥 default_host를
사용할 것입니다.

(가상호스트라는 개념도, 참 고민해야 할 것이 많습니다. 이 고민은 차차 하시죠)

EAR를 설치할 물리적인 어플리케이션서버(프로세스 혹은 인스턴스)를 선택하는 과정
입니다. 하나 이상의 서버 혹은 클러스트가 있다면, 원하는 것을 선택하고 [적용]버튼을
누른 후, 진행하십시요.


마지막, 아래에서 [완료]를 누릅니다.








5. 실행/테스트 하기

"server1"이 이미 기존에 떠 있는 상태에서, 위 과정이 진행되었더라도, "server1"을
다시 내렸다 올릴 필요는 없습니다. 단지 "엔터프라이즈응용어플리케이션"에서 방금
설치한 lwy.ear를 그대로 [시작] 시켜주면 됩니다. "Hot Deploy"의 멋진 기능이라고나
할까요.

ear이 설치된 디렉토리에 보면, lwy.ear/lwy.war/ 라는 디렉토리가 있고, 이곳이 lwy.war의
context root 디렉토리입니다. Context name은 "/lwy/*" 인 것이지요.

그 하부에 tuning/ 이라는 디렉토리가 있을 것이고, 제가 넣어둔 각종 샘플 어플리케이션이
있습니다. 아래를 적절히 실행시켜 확인해 보세요.
(저의 경우, E:\WAS50\app\lwy.ear\lwy.war\tuning\ 에 설치되었습니다.)

http://localhost:9080/lwy/tuning/m.jsp
http://localhost:9080/lwy/tuning/gc.jsp
http://localhost:9080/lwy/tuning/env.jsp
http://localhost:9080/lwy/tuning/hangul.jsp

무엇보다 데이타베이스 연결테스트를 하고 싶으시겠죠?
http://localhost:9080/lwy/tuning/ds5.jsp

소스에서, 위 과정을 그대로 따라 했다면, 유일하게 SQL 문장만 적절히 수정하면
그대로 실행될 것입니다.

샘플 중, ds35.jsp(WebSphere 3.5용), ds4.jsp(WebSphere 4.0용), ds5.jsp(WebSphere 5.0)
등이 있으니, 소스 내에 있는 주석을 참고하여, 그 차이점을 반드시 익히도록 하십시요.


만약, 웹서버와 연동하여 실행할 것이라면, 웹스피어 관리콘솔--> "환경" 메뉴에 있는
"가상호스트설정" 과 "웹서버 플러그인 갱신"을 잊지 마세요.

수고하셨습니다.


6. 다시 설치하기.

그러나, 아마, "lwy"라는 이름이 마음에 안드실 것이고, 또, 데이타소스의 개수 및
이름도 실운영환경에 적절치 않을 것입니다. 어차피 EAR설치작업은 5분작업이니,
테스트로 방금 설치한 것은 모두 다시 다 지우고,

(1) lwy.ear 파일 AAT로 적절히 이름바꿔 수정하기
(2) 데이타소스 다시 잘 등록하기

등의 과정을 거쳐 맘에 드는 설치환경을 꾸며 보십시요.

도움이 되었기를 희망합니다.


-------------------------------------------------------
본 문서는 자유롭게 배포/복사 할 수 있으나 반드시
이 문서의 저자에 대한 언급을 삭제하시면 안됩니다
================================================
자바서비스넷 이원영
E-mail: javaservice@hanmail.net
PCS:011-898-7904
================================================
반응형

'Know > DATABASE' 카테고리의 다른 글

DB2 JDBC TYPE  (0) 2006.07.13
JDBC FAILOVER 구현예제  (0) 2006.07.12
rollup  (0) 2006.02.15
ERROR 2006 : MySQL server has gone away  (0) 2005.06.21
[MySQL] time out(wait_timeout) 계산과 설정  (0) 2005.06.21