java ์ด์ค‘๋กœ๊ทธ์ธ ๊ธˆ์ง€

2013. 2. 26. 10:42ยทLanguages/JAVA

์›น์—์„œ์˜ ์ค‘๋ณต๋กœ๊ทธ์ธ ๋ฐฉ์ง€์˜ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•

thumb

์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ค‘๋ณต๋กœ๊ทธ์ธ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด, ๋Ÿฌํ”„ํ•œ ์„ค๊ณ„ ์ˆ˜์ค€์—์„œ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (์•„๋Š”๋ฐ๊นŒ์ง€๋งŒ..)

๊ฐœ์š”

- ํ•˜๋‚˜์˜ userId๋กœ ๋™์‹œ์— ๋‘๊ณณ ์ด์ƒ์—์„œ ์—ฐ๊ฒฐ(๋กœ๊ทธ์ธ๋œ..)๋  ์ˆ˜ ์—†๋‹ค๋Š” ๋œป์œผ๋กœ, ๋ณด์•ˆ์ด์Šˆ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
 - ๋จผ์ € ๋กœ๊ทธ์ธํ•œ ์—ฐ๊ฒฐ์ด A, ๋‚˜์ค‘์— ๋กœ๊ทธ์ธ์„ ์‹œ๋„ํ•˜๋Š” ์—ฐ๊ฒฐ์ด B๋ผ๋ฉด, B๊ฐ€ ๋กœ๊ทธ์ธํ–ˆ์„๋•Œ A์˜ ์—ฐ๊ฒฐ์„ ๋Š๋Š”(ํŠ•๊ฒจ๋‚ด๋Š”) ๋ฐฉ๋ฒ•, ๋˜๋Š” A์˜ ์—ฐ๊ฒฐ์„ ์œ ์ง€ํ•˜๊ณ  B์˜ ๋กœ๊ทธ์ธ์‹œ๋„๋ฅผ ๋ง‰๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉฐ, ์ฃผ๋กœ ์ „์ž์˜ ๋ฐฉ๋ฒ•์„ ์ทจํ•ฉ๋‹ˆ๋‹ค.

 

ํžˆ์Šคํ† ๋ฆฌ

- ์›น ์ด์ „์˜ CS ํ”„๋กœ๊ทธ๋žจ ์‹œ์ ˆ์—๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ์„ ์ง์ ‘ ์ œ์–ด๊ฐ€ ๊ฐ€๋Šฅํ–ˆ์œผ๋ฏ€๋กœ ๊ธฐ์ˆ ์ ์ธ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
 - ์›น์œผ๋กœ ๋„˜์–ด์™€์„œ, ActiveX๊ฐ€ ํšกํ–‰ํ•˜๋˜ ์‹œ์ ˆ์—๋Š” ์ฃผ๋กœ ActiveX๋ฅผ ์ด์šฉํ•˜์—ฌ ์ค‘๋ณต๋กœ๊ทธ์ธ ๋ฐฉ์ง€๋ฅผ ๊ตฌํ˜„ํ–ˆ์œผ๋ฉฐ, ๋Œ€๋ถ€๋ถ„ SSO, EAM ๋“ฑ์˜ ๋ณด์•ˆ๊ด€๋ จ ์†”๋ฃจ์…˜์˜ ์ถ”๊ฐ€๊ธฐ๋Šฅ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์Šˆ ๋ฆฌ์ŠคํŠธ

 - ์ด์Šˆ #1. ๋กœ๊ทธ์•„์›ƒ ์ด๋ฒคํŠธ ์บ์น˜
 - ์ด์Šˆ #2. ์—ฐ๊ฒฐ๋œ user๋“ค ๊ด€๋ฆฌ
 - ์ด์Šˆ #3. ์—ฐ๊ฒฐ์„ ๋Š๊ธฐ(ํŠ•๊ฒจ๋‚ด๊ธฐ)
 

์ด์Šˆ #1. ๋กœ๊ทธ์•„์›ƒ ์ด๋ฒคํŠธ ์บ์น˜

 - ์›น์—์„œ์˜ ์ค‘๋ณต๋กœ๊ทธ์ธ ๋ฐฉ์ง€์˜ ์ฒซ๋ฒˆ์งธ ์ด์Šˆ์ด์ž ๊ฐ€์žฅ ํฐ ์ด์Šˆ๋Š” stateless connection ํŠน์„ฑ์— ๊ธฐ์ธํ•˜๋Š”๋ฐ, ๋กœ๊ทธ์ธ ์‹œ์ ์˜ ํ–‰์œ„๋Š” ์ž์œ ๋กญ๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ ๋กœ๊ทธ์•„์›ƒ ์‹œ์ ์„ ๋ช…ํ™•ํžˆ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ, ๋กœ๊ทธ์ธ๋œ ์—ฐ๊ฒฐ์˜ ์ข…๋ฃŒ์‹œ์  ์•Œ์ˆ˜์—†๋‹ค๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ์•„์›ƒ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋Š” ๋ช…์‹œ์  ๋กœ๊ทธ์•„์›ƒ์˜ ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ, ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ์•„๋ฒ„๋ฆฌ๋Š” ๊ฒฝ์šฐ๋Š” ์บ์น˜ํ•  ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. (๋ฌผ๋ก , ์ฃผ๊ธฐ์ ์œผ๋กœ ํ—ฌ์Šค์ฒดํฌ๋ฅผ ๋ณด๋‚ด๋Š” ๋“ฑ์˜ ํŽธ๋ฒ•์€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.)
 - ์ด ๋ฌธ์ œ๋Š” WAS์˜ session timeout์„ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ธ ํ•ด๋ฒ•์œผ๋กœ, web.xml์— timeout ์„ค์ •์„ ํ•œ ํ›„, session์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์„ ๋ฆฌ์Šค๋‹ํ•˜๋Š” HttpSessionListener ๋˜๋Š” HttpSessionAttributeListener ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ web.xml์— ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
 - HttpSessionListener๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด sessionDestroyed ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด session์ด ๋Š๊ธฐ๋Š”(invalidate, timeout) ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์•„ ์›ํ•˜๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 - HttpSessionAttributeListener๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด attributeRemoved ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด session์ด ๋Š๊ธฐ๋ฉด์„œ(invalidate, timeout) attribute๊ฐ€ remove๋˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์•„ ์›ํ•˜๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 - ์ธํ„ฐ๋„ท์—์„œ ๊ฒ€์ƒ‰ํ•ด๋ณด๋ฉด HttpSessionBindingListener๊ฐ€ ๋งŽ์ด ๋‚˜ํƒ€๋‚˜๋Š”๋ฐ, ์ด๋Š” ์œ„์˜ ๋‘ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ์„œ๋ธ”๋ฆฟ2.3์—์„œ์•ผ ์ถ”๊ฐ€๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ฉฐ SessionBindingListener์˜ ๊ฒฝ์šฐ session์˜ ๋ผ์ดํ”„์‚ฌ์ดํด๊ณผ ๊ฐœ๋…์ƒ ์ฐจ์ด๊ฐ€ ์žˆ๊ณ  tomcat ์ผ๋ถ€ ๋ฒ„์ „์—์„œ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๋“ฑ์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
 - ์œ„์˜ ๋ฆฌ์Šค๋„ˆ๋“ค์€ WAS์— ๋”ฐ๋ผ ์ฐจ์ด๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ๋“ค์–ด, ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง๋œ ์›น์Šคํ”ผ์–ด ์ผ๋ถ€ ๋ฒ„์ „์—์„œ๋Š” ์œ„์˜ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

์ด์Šˆ #2. ์—ฐ๊ฒฐ๋œ user๋“ค ๊ด€๋ฆฌ

 - ์—ฐ๊ฒฐ(๋กœ๊ทธ์ธ) ์‹œ๋„์‹œ์— ์ด๋ฏธ ์—ฐ๊ฒฐ๋œ user์ธ์ง€๋ฅผ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด globalํ•œ ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”ํ•œ๋ฐ, application ๋ ˆ๋ฒจ์˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
 - ๋ฉ€ํ‹ฐ์„œ๋ฒ„ ์ง€์› ๋“ฑ์„ ์œ„ํ•ด์„œ๋Š” DB๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ผ๋ถ€ ์ƒ์šฉWAS์˜ ๊ฒฝ์šฐ ์„ธ์…˜ํด๋Ÿฌ์Šคํ„ฐ๋ง์„ ์œ„ํ•˜์—ฌ DB๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์„ธ์…˜๊ด€๋ฆฌ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
 - ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž์˜ userId, sessionId ๋“ฑ์„ HashMap ๋“ฑ์— ๋„ฃ์–ด ์ €์žฅํ•˜๊ณ  ์ด๋ฅผ static์œผ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ context์— ๋„ฃ์–ด ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
 - ๋กœ๊ทธ์ธ ์‹œ์— userId๋ฅผ ์ €์žฅ์†Œ์— ๋„ฃ๊ณ , ๋กœ๊ทธ์•„์›ƒ์ด๋‚˜ session timeout์‹œ์—(์ด์Šˆ #1์˜ ๋ฆฌ์Šค๋„ˆ๋“ค ์‚ฌ์šฉ) ํ•ด๋‹น userId๋ฅผ ์ €์žฅ์†Œ์—์„œ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. (๊ทธ์ „์—, ์„ธ์…˜ ๋ฆฌ์Šค๋„ˆ์—์„œ userId๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ๋กœ๊ทธ์ธ์‹œ์— session์— userId๋ฅผ setAttributeํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

์ด์Šˆ #3. ์—ฐ๊ฒฐ์„ ๋Š๊ธฐ(ํŠ•๊ฒจ๋‚ด๊ธฐ)

 - Action class๋‚˜ ํ•„ํ„ฐ ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํ–‰์œ„์‹œ์— ์œ„์˜ ์ €์žฅ์†Œ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” userId, sessionId ๋“ฑ์„ ํ˜„์žฌ์˜ ์ •๋ณด์™€ ๋น„๊ตํ•œ ํ›„ ํ•„์š”์— ๋”ฐ๋ผ ๊ฐ•์ œ๋กœ ๋กœ๊ทธ์•„์›ƒ(session์„ invalidate) ํ•ฉ๋‹ˆ๋‹ค.
 - SessionContext๋ฅผ ์ด์šฉํ•˜์—ฌ WAS ์ƒ์˜ ๋ชจ๋“  ์„ธ์…˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€์ ธ์™€ sessionId์— ํ•ด๋‹นํ•˜๋Š” session์„ ๋Š๋Š” ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•˜์ง€๋งŒ, ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ์ž˜ ๋™์ž‘ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ •๋ฆฌ

 - ์ €์žฅ์†Œ(HashMap<String,String>)๋ฅผ ๋งŒ๋“ค์–ด Application context์— ์ €์žฅ
 - ๋กœ๊ทธ์ธ ์‹œ์— ์œ„์˜ ์ €์žฅ์†Œ์— userId,sessionId๋ฅผ put
 - ๋กœ๊ทธ์ธ ์‹œ์— userId๋ฅผ session์— setAttribute
 - ๋กœ๊ทธ์ธ ์‹œ์— ์ €์žฅ์†Œ์— ์ด๋ฏธ ํ•ด๋‹น userId๊ฐ€ ์กด์žฌํ•˜๋ฉด removeํ•œ ํ›„ userId์™€ ์ƒˆ sessionId๋ฅผ put
 - WAS์— session timeout ์„ค์ • (web.xml)
 - HttpSessionListener๋ฅผ implementsํ•˜์—ฌ class ์ƒ์„ฑ. (web.xml์— ๋ฆฌ์Šค๋„ˆ ๋“ฑ๋ก)
 - sessionDestroyed ๋ฉ”์†Œ๋“œ์—์„œ event.getSession().getAttribute("userId")๋กœ ํ˜„์žฌ์˜ userId๋ฅผ ์–ป์–ด ์œ„์˜ ์ €์žฅ์†Œ์—์„œ remove
 - ๋ชจ๋“  ํ–‰์œ„์‹œ์—, ์ €์žฅ์†Œ์— ์ €์žฅ๋œ userId,sessionId๋ฅผ ํ˜„์žฌ ์ •๋ณด์™€ ๋น„๊ตํ•˜์—ฌ ๋™์ผํ•˜์ง€ ์•Š์œผ๋ฉด alert ํ›„ ๊ฐ•์ œ ๋กœ๊ทธ์•„์›ƒ
 
 
์ด์ƒ์ž…๋‹ˆ๋‹ค.
๋ฌธ์ œ ๋ฐœ๊ฒฌ ์‹œ ๋˜๋Š” ๋‹ค๋ฅธ ์ข‹์€ ๋ฐฉ๋ฒ•์„ ์•„์‹œ๋Š” ๋ถ„์˜ ๋Œ“๊ธ€์„ ํŠนํžˆ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.
์ถœ์ €: http://cafe.naver.com/hermeneus/33

728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'Languages/JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [java]ํŠน์ˆ˜๋ฌธ์ž์˜ ์กด์žฌ์—ฌ๋ถ€
  • Session ๊ด€๋ฆฌ
  • java json convert to List
  • How to do an array of hashmaps?
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
์ผ์ƒ, ๊ฒŒ์ž„, ๋ง›์ง‘, ์—ฌํ–‰, ๊ฐœ๋ฐœ, IT ๋ธ”๋กœ๊ทธ๐Ÿงž
  • ์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
    ์š”์ˆ  ๋žจํ”„๐Ÿซ–
    ์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • All (549)
      • Languages (57)
        • JAVA (13)
        • JSP (1)
        • C_C++ (4)
        • Html (3)
        • CSS (1)
        • JavaScript (18)
        • Python (3)
        • Kotlin (13)
        • TypeScript (1)
      • Framework (14)
        • spring (11)
        • jstl (1)
        • angular (2)
      • Tool (28)
        • Eclipse (5)
        • vsCode (3)
        • scrcpy (2)
        • Git (1)
        • IntelliJ (6)
        • Visual-studio (1)
        • UML (1)
        • Gradle (8)
      • DB (6)
        • Oracle (1)
        • MySql (3)
        • Mongo (2)
      • OS (14)
        • Linux (2)
        • Windows (12)
      • Server (8)
        • Tomcat (1)
        • Apache (1)
        • Node.js (6)
      • Programmings (25)
        • Design Pattern (2)
        • Funny (20)
        • Algorithms (3)
      • Cloud (8)
        • Docker (1)
        • Kubernetes (4)
        • Istio (1)
        • ArgoCD (2)
      • IT (5)
        • gRPC (3)
        • RESTful (3)
        • Web UI (5)
        • AI (4)
      • Book (6)
      • TIP (187)
      • Life (53)
      • Game (83)
      • Storage (22)
      • ์‹๋‹น (15)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ์‚ฌ์ดํŠธ๋งต
    • RSS
    • ๊ธฐํƒ€ ์†Œ๋“
  • ๋งํฌ

    • ๊ตฌ๊ธ€
    • ๋„ค์ด๋ฒ„
    • ์ •๋ถ€24
    • Spring Framework ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ
    • Kotlin ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ
    • ์นด์นด์˜ค ์• ๋“œํ•
    • ๋ธ”๋กœ๊ทธ ์‚ฌ์ดํŠธ๋งต
    • ๋ธ”๋กœ๊ทธ RSS
  • ๊ณต์ง€์‚ฌํ•ญ

    • ์•ˆ๋…•ํ•˜์„ธ์š”
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ฐ์ผ๋ฆฌ ๋‰ด์Šค
    ๋ธŒ๋ฆฌํ•‘
    ํƒœ๊ตญ
    ๋ชฌ์Šคํ„ฐํ—Œํ„ฐ์™€์ผ์ฆˆ
    ํ€˜์ŠคํŠธ
    ํ•œ๋ˆˆ์— ๋ณด๋Š” ์˜ค๋Š˜์˜ ๋‰ด์Šค
    ๋ชฌ์Šคํ„ฐํ—Œํ„ฐ๋‚˜์šฐ
    ๋‰ด์Šค ๋ธŒ๋ฆฌํ•‘
    ๋‰ด์Šค
    ์˜ค๋Š˜์˜๋‰ด์Šค
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
java ์ด์ค‘๋กœ๊ทธ์ธ ๊ธˆ์ง€
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”