'session'에 해당되는 글 2건

  1. 2012.03.22 java HttpSessionBindingListener 맛보기.
  2. 2012.02.28 Tomcat 6.0.35 Session Clustering

java HttpSessionBindingListener 맛보기.

ITWeb/개발일반 2012.03.22 19:26
뭐 어찌 어찌 하다보니.. 이것도 보게 되었습니다.
그래서 테스트.. ^^;
코드는 무지 짧습니다.
서블릿 파일 하나, binding listenr 클래스 하나..

[참고사이트]


[CreateSessionBinding.java]

더보기



[SessionBindingListener.java]

더보기



※ 자, 그럼 이걸 어디에 써먹어야 할까요???
이 예제는 보시면 아시겠지만 session.setAttribute 즉 session key/value 에 binding 되면 event 가 발생하게 되는 거랍니다.
그니까.. isNew() 할때.. 필요한 걸 session 에 저장한 다음.. session expired 되거나 하면 자동으로 삭제가 되도록 필요한 기능을 구현 하면 되겠죠.
불필요한 session 을 삭제 하거나 아니면 status 등을 처리 한다거나 할때.. 별도의 listener 없이 이걸 가지고 구현 하면 쉽게 할 수 있을 듯 합니다.

배도 고프고 해서 오늘은 여기까지만.. ㅎㅎ

실행 방법은 잘 아시죠.. servlet 하나 생성 하셔서 Run on Server 하시면 되요.. 
-> http://localhost:8080/proto.session/CreateSessionBinding


[실행로그]

2012. 3. 22 오후 7:32:39 org.apache.catalina.core.ApplicationContext log

정보: BOUND to C7A16EA8F0687784DAA17367695BA501

2012. 3. 22 오후 7:32:39 org.apache.catalina.core.ApplicationContext log

정보: new session.binding : C7A16EA8F0687784DAA17367695BA501

2012. 3. 22 오후 7:33:37 org.apache.catalina.core.ApplicationContext log

정보: UNBOUND from C7A16EA8F0687784DAA17367695BA501

- 보시면 처음 페이지가 열리면 BOUND 되구요.
- Session expired 되면 UNBOUND 됩니다.
- 또는 session.setAttribute 해서 binding 하셔도 UNBOUND 됩니다.
- tomcat 의 web.xml 에서 아래 처럼 변경했습니다. (1분)

    <session-config>

        <session-timeout>1</session-timeout>

    </session-config>


역시 배고파서 작성하는 글은.. 좀 부족하내요.. ㅋㅋ
집에 와서 다시 업데이트..
위에 CreateSessionBinding 서블릿 클래스를 보시면 빨간 부분 보이시죠..
그렇습니다.
위에 설명한 "또는 session.setAttribute 해서 binding 하셔도 UNBOUND 됩니다." 는.. set 한 key 에 대해서 binding 되면 event 가 발생을 하게 되는 것입니다.
테스트가 부족했으니 내일 다시 최종 확인 결과 올리겠습니다. ㅡ.ㅡ;;

[최종테스트결과]

- 이론이 역시 맞습니다.

session.setAttribute("session.id", new SessionBindingListener(context));

- session 에 listener 를 등록해 줬기 때문에 이넘이 bound, unbound 되면 event 가 발생하게 되는 것입니다.

 
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
tags : session
Trackback 0 : Comment 0

Tomcat 6.0.35 Session Clustering

ITWeb/서버관리 2012.02.28 11:09
Tomcat 6.0.35 Session Clustering 


[준비사항]

- Apache 2.4.1 다운로드 받기 : http://httpd.apache.org/download.cgi#apache24

- Tomcat 6.0.35 다운로드 받기 : http://mirror.khlug.org/apache/tomcat/tomcat-6/v6.0.35/bin/apache-tomcat-6.0.35.zip

- Tomcat Connecter 다운로드 받기 : http://ftp.daum.net/apache//tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.32-src.zip

- 다운로드 링크가 깨졌다면 해당 사이트에 직접 다운로드 받으시면 됩니다.


[설치]

- Windows 에 설치 하는 것이기 때문에 대부분 압축만 푸시고 적당한 위치에 가져다 놓으시면 됩니다.
- 편의상 D:\Application\ 아래 놓도록 하겠습니다.
- 그 이외 자세한 설치 방법은 제 블로그 이전 글 참고 하시면 됩니다. (linux 버전이지만 참고 정도는 됩니다. ^^;)
- httpd 설치 : http://jjeong.tistory.com/421
- tomcat 설치 : http://jjeong.tistory.com/435
- tomcat connector 설치 : http://jjeong.tistory.com/433
- httpd+tomcat+jdk 연동 : http://jjeong.tistory.com/230

 
[설정]

- httpd 설정하기
httpd 가 설치된 경로에서 conf 폴더에 있는 httpd.conf 파일을 에디터창에서 수정.

# 이 설정에 주석을 제거해 줍니다.
# 이유는 httpd 의 proxy balancer 기능을 이용하기 위해서 입니다.
# tomcat 의 경우 기본 worker 설정에서 type 을 lb 로 지정해 주면 httpd 관계 없이 loadbalancer 기능을 이용 할 수 있습니다. 
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so

# 이 설정에 주석을 제거해 줍니다.
Include conf/extra/httpd-vhosts.conf

# 아래 파일을 include 해 줍니다.
Include D:/Application/httpd/conf/session-cluster/tomcat.conf

 
[httpd-vhost.conf 설정하기]

<VirtualHost dev.session-cluster.com:80>
    ServerAdmin jjeong@tistory.com
    DocumentRoot "D:\Application\httpd\htdocs\session_cluster\web"
    ServerName dev.session-cluster.com
    ServerAlias dev.session-cluster.com
    ErrorLog "D:\Application\httpd\logs\dev.session-cluster.com-error.log"
    CustomLog "D:\Application\httpd\logs\dev.session-cluster.com-access.log" common
jkMount /* loadBalancer
DirectoryIndex index.html index.jsp

<Directory "D:\Application\httpd\htdocs\session_cluster\web">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from All
</Directory>
</VirtualHost>

 
[tomcat.conf 설정하기]

LoadModule jk_module modules/mod_jk.so

JkWorkersFile            D:/Application/httpd/conf/session-cluster/workers.properties
JkShmFile               D:/Application/httpd/logs/mod_jk.shm
JkLogFile                D:/Application/httpd/logs/mod_jk.log
JkLogLevel               debug
JkLogStampFormat      "[%a %b %d %H:%M:%S %Y] "
JkRequestLogFormat   "%w %V %T"

 
[workers.properties 설정하기]

ps=/
worker.list=tomcat1, tomcat2, loadBalancer

worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1

worker.tomcat2.port=8109
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1

worker.loadBalancer.type=lb
worker.loadBalancer.balanced_workers=tomcat1,tomcat2
worker.loadBalancer.sticky_session=1

 
[Tomcat1 server.xml 설정하기]

- 파일을 열어 보시면 <Cluster /> 섹션이 있습니다.
- 주석 처리 되어 있는 부분을 해제 합니다.
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
- <Engine /> 섹션에 jvmRoute 코드 추가 합니다.
<Engine defaultHost="localhost" jvmRoute="tomcat1" name="Catalina">

이전 버전과 다른 점은 
previous : org.apache.catalina.cluster.tcp.SimpleTcpCluster
current : org.apache.catalina.ha.tcp.SimpleTcpCluster
해당 패키지의 경로 입니다.

 
[Tomcat2 server.xml 설정하기]

- Tomcat1 설정과 동일하게 주석을 제거 합니다.
- <Engine /> 섹션에 jvmRoute 코드 추가 합니다.
<Engine defaultHost="localhost" jvmRoute="tomcat2" name="Catalina">

 
[Tomcat1, Tomcat2 서버의 web.xml 설정하기]

- 설정 파일 제일 하단에 아래 코드 추가 합니다.
<distributable />

 
[Tomcat 설정 시 주의사항]

- 위 설정들은 PC 한 대에서 설정하는 내용으로 기술을 하였습니다.
- 각 port 충돌이 발생 하지 않도록 주의 하시기 바랍니다.

 
[Tomcat1 서버의 index.jsp]

<%
  session.setAttribute("a","a");
%>
<html>
<head>
<title>Test JSP</title>
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr bgcolor="#CCCCCC">
    <td width="13%">Tomcat1 Machine</td>
    <td width="87%">&nbsp;</td>
  </tr>
  <tr>
    <td>Session ID :</td>
    <td><%=session.getId()%></td>
  </tr>
</table>
</body>
</html>


 
 
[Tomcat2 서버의 index.jsp]

<%
  session.setAttribute("a","a");
%>
<html>
<head>
<title>Test JSP</title>
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr bgcolor="#CCCCCC">
    <td width="13%">Tomcat2 Machine</td>
    <td width="87%">&nbsp;</td>
  </tr>
  <tr>
    <td>Session ID :</td>
    <td><%=session.getId()%></td>
  </tr>
</table>
</body>
</html>




Eclipse 에서 Tomcat1, 2 를 번갈아 가면서 start, stop 해 보시면 lb 동작 하는걸 확인 하실 수 있습니다.
그리고 session 유지 되는 것도 확인 가능 합니다.
 
[Eclipse 에서 Tomcat 서버 등록 및 실행하기]

- Server 창에서 New -> Server -> Apache -> Tomcat v6.0 Server 선택
- Server name 에 Tomcat Session Cluster 1 이라고 작성
- Next 버튼 클릭 또는 Server runtime environment 에서 Add 클릭
- Browse 버튼 클릭 후 설치된 Tomcat1 서버의 경로를 지정 합니다.
- 이런 방식으로 Tomcat2 서버도 등록을 합니다.


 

[참고사이트]
http://www.easywayserver.com/implementation-tomcat-clustering.htm
http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html


※ 위 내용은 성능 튜닝을 고려하지 않은 내용입니다.
실제 서비스에 적용하시기 전에 충분한 튜닝 과정을 거치시기 바랍니다.

※ 서버 한대를 기준으로 설정한 내용입니다.
서버 여러대를 묶기 위해서는 <Cluster /> 섹션에 추가 설정을 해줘야 합니다.
이 부분은 추후 작성 업데이트 하겠습니다.  

 
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 : Comment 0

티스토리 툴바