블로그 이미지
숏퐁숑

카테고리

분류 전체보기 (70)
게임기획자 준비 (18)
게임기획 참고자료 (7)
프로그램 (33)
숨쉬기 활동 (10)
Total
Today
Yesterday

달력

« » 2024.10
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 31

공지사항

태그목록

최근에 올라온 글

오늘은 톰캣의 설치 및 서블릿 구동에 대한 내용을 정리해 보고자 한다. 일반적으로 톰캣은 경량 컨테이너라고 부르는데 가장 쉽게 접할 수 있는 WAS의 한 종류라고 볼 수 있다. WAS에는 크게 4가지 종류가 있는데 Weblogic, Websphere, JEUS, TOMCAT 이다.  흔히 우리는 로컬PC에서는 TOMCAT을 설치하여 서버를 구동하는데 말 그대로 경량 컨테이너이기 때문에 부담 없이 개인 PC에선 개발용으로 충분히 사용할 수 있겠다.

 

1. 우선 JDK 설치를 설치한다.

 

2. 웹서버(WAS) 설치(tomcat.apache.org사이트에서 다운로드)

    => tomcat 7.0 다운로드 (인스톨버전, 무설치 압축버전 중 택)


   *설정하기

  1. jdk path 잡기 => C:\Program Files\Java\jdk1.6.0_21\bin

  2. JAVA_HOME  => C:\Program Files\Java\jdk1.6.0_21

  3. CATALINA_HOME  => C:\tomcat                           // TomCat을 설치한 경로 or 압축푼 경로.

 

3. 이클립스 설치

     =>다이나믹웹프로젝트 생성함.

       src/                 //java파일만들기

       webContent/     //jsp, script, html, css문서 만들기

 


4. 이클립스에 서버등록하기(server.xml문서에 가상폴더 생김)


 

 

실행방법 :

http://ip:port/

웹서버가 설치되어있는 IP

LocalHost (127.0.0.1) 기본 포트 : 8080

 

보통 http://localhost:8080  을 입력하면 확인 할 수 있다.

Posted by 숏퐁숑
, |

Coherence WebClustering 기능을 통한 Session Clustering 구성 환경에서 Failover 실패에 대한 원인을 정리하고자 한다.  2대의 서버를 올려놓고 한대의 서버가 죽더라도 다른 서버에서 요청처리가 되어지도록 설정이 되어있었다. 즉 Clustering 구성이 되어있다는 말이다.  Weblogic을 사용하는데 비용때문에 엔터프라이즈로 들여오지 못하고 스탠다드로 들여오다 보니 Coherence WebClustering 기능을 통하여 구성을 하게 되었다 Coherence WebClustering이란 간단히 세션 서버를 따로 띄워놓고, 하나의 서버가 죽더라도 다른 서버에서 아무 문제 없이 세션을 공유한체 서비스를 제공해주기 위한 방식을 말한다. UI 단 계발은 XPLATFORM으로 개발이 되어 있는 상태다. Weblogic에서 Coherence WebClustering 기능을 통한 session Clustering 구성 환경에서 왜 Failover 실패가 되었을까?

 

처음엔 Xplatform에서 문제가 되는 것이 아닌가? 라는 생각이 들었다. 하지만 원인 다른 곳에 있었다. 

?

가)    Session Cluster 기능 정의

     Session Cluster Session 객에의 Attribute set된 직렬화된 객체를 Replication 방식을 통해 Failover를 구현하는 기능이다.

     Session Failover 전제 조건

   -. Session attribute에 담긴 객체가 Serializable(직렬화)객체여야 한다.

  -. Session attribute에 담겨야 한다. (Session외의 객체는 clustering 대상이 아니다)

 

나)    Application에서의 Session Check 방식(소스 분석 결과)

     소스 분석결과 Application에서의 Session 체크 로직이 Session만 체크하는 일반적인 구현방식이 아닙니다.

     일반적인 Session 유지 로직은 Session객체의 Attribute에 특정 Value Object를 담아 놓고 사용한다. 구현된 로직 상에 보면 Session Object외에 ServletContext attribute Object를 담고, session 체크 로직에서 양쪽의 Value값을 함께 체크하고 있다. 이는 일반적인 Session 체크 방식이 아니다.

     Cluster의 대상은 Session Object입니다. SevletContext 객체는 Cluster 대상이 아니다.

 

다)    Session 유지 테스트

     기본적인 세션관련 테스트 페이지(FailoverTest.jsp) Session 객체만을 이용하여 하나의 인스턴스 다운 시 클러스터의 다른 인스턴스를 통해 세션이 유지됨을 테스트 하는 페이지로, 테스트 결과 정상적으로 세션이 유지 되고 있다.

     Failover 현상 시, Session객체에 담긴 값은 Secondary 서버에서 그 값을 유지하지만  ServletContext Object는 복제대상이 아님으로 체크 값이 없다.

     WebLogic ? Coherence 구조의 테스트 뿐만 아니라 WebLogic Cluster 상의 테스트도 동일 결과가 나왔다.

?

결론은 현재의 현상은 Session Failover 실패 현상이 아니였다. Cluster 대상이 아닌 ServletContext객체를 Session체크를 하는 프로그램상의 오류 였다. 일반적으로 Session에 관련된 로직은 ServletContext객체 대신 Session객체만을 사용하여 구현한다.

 

Posted by 숏퐁숑
, |

세선은 클라이언트와 서버 간의 연결 단위를 지칭하는 용어입니다. 하나의 세션이 형성 되었다는 말은 클라이언트와 서버간에 하나의 연결이 이루어졌다는 의미입니다.

대개 "세션이 있다, 없다"는 식으로 표현을 합니다. 이것은 "현재 연결이 되어 있다, 아니다"를 말하는 것입니다.
Session 객체


getAttribute() 현재의 세션에 포함되어 있으면서 특정 이름을 가진 object 형의 객체를 반환합니다. 만일 해당 이름을 가진 객체가 존재하지 않는다면 null 값을 반환합니다 .
getAttributeNames() 현재의 세션에 포함되어 있는 객체의 이름들을 Enumeration 객체 집합으로 반환합니다.
getCreationTime() 현재의 세션이 생성된 시간을 반환합니다. 이 값은 밀리세컨드 단위이며, 기준은 유닉스 시간, 즉 1970년 1월 1일 GMT를 기준으로 해서 계산된 값입니다.
getId() 현재 세션의 유일한 구분값을 반환합니다. 세션은 사용자 별로 식별 가능한 값들을 가지고 있는데, 이 값들을 얻기 위해서 이 메소드를 이용하게 됩니다. 이 값은 JSP 개발자가 직접 다룰 일은 거의 없으며, 대부분 웹 컨테이너에서 세션 객체를 구분할 경우에 사용합니다.
getLastAccessedTime() 사용자가 현재 세션과 관련된 요청을 전송한 최종 시간을 반환합니다. 이 값은 밀리세컨드 이며, getCreationTime과 마찬가지로 유닉스 시간을 사용합니다.
getMaxInactiveInterval() 하나의 요청과 그 뒤의 요청 사이의 시간 간격을 얼마 동안 유효하게 볼 것인지에 대한 값을 반환합니다. 이 시간을 넘겨 요청하게 되면 해당 세션은 무효화됩니다.
getServletContext() 현재 세션과 연관되어 있는 ServletContext 객체를 반환합니다.
invalidate() 현재 세션을 무효화시키고, 세션에 있는 모든 객체들을 제거합니다.
isNew() 클라이언트에서 전송한 요청이 세션과 연관되지 않은 최초의 요청일 경우는 true를, 이미 세션과 연관되어 있다면 false를 반환합니다.
removeAttribute() 현재 세션에 저장되어 있는 객체 중 특정 이름을 가지고 있는 객체를 제거합니다.
setAttribute() 현재의 세션 객체에 특정 이름의 객체를 추가합니다.
setMaxInactiveInterval() 요청과 요청 사이에 세션 정보를 유지시킬 수 있는 시간을 설정합니다. 만일 이 시간을 넘어선 상태에서 요청을 하게 되면 세션은 무효화됩니다.

Posted by 숏퐁숑
, |

최근에 달린 댓글

글 보관함