From bf68ca74fdf05502fd5ff6f3ede5bc4d99fc5ded Mon Sep 17 00:00:00 2001 From: "xj753277@126.com" Date: Mon, 16 Jun 2014 10:29:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../farsunset/cim/nio/session/CIMSession.java | 29 ++++++++++++------ ichat-server/.classpath | 6 ++-- .../WebRoot/WEB-INF/lib/cim-core.1.5.jar | Bin 45098 -> 31752 bytes .../ichat/cim/handler/BindHandler.java | 2 +- .../cim/session/ClusterSessionManager.java | 27 +++++----------- 5 files changed, 31 insertions(+), 33 deletions(-) diff --git a/cim-core/src/com/farsunset/cim/nio/session/CIMSession.java b/cim-core/src/com/farsunset/cim/nio/session/CIMSession.java index 0161272..c8083d2 100644 --- a/cim-core/src/com/farsunset/cim/nio/session/CIMSession.java +++ b/cim-core/src/com/farsunset/cim/nio/session/CIMSession.java @@ -27,7 +27,8 @@ public class CIMSession implements Serializable{ private IoSession session; - private String id;//session全局ID + private String gid;//session全局ID + private Long nid;//session在本台服务器上的ID private String deviceId;//客户端设备ID private String host;//session绑定的服务器IP private String account;//session绑定的账号 @@ -40,6 +41,7 @@ public class CIMSession implements Serializable{ public CIMSession(IoSession session) { this.session = session; + this.nid = session.getId(); } public CIMSession() @@ -63,11 +65,25 @@ public class CIMSession implements Serializable{ } - public String getId() { - return id; + + + + + public String getGid() { + return gid; } + public void setGid(String gid) { + this.gid = gid; + } + public Long getNid() { + return nid; + } + + public void setNid(Long nid) { + this.nid = nid; + } public String getDeviceId() { return deviceId; @@ -95,12 +111,7 @@ public class CIMSession implements Serializable{ } - - public void setId(String id) { - this.id = id; - } - - + public String getHost() { return host; diff --git a/ichat-server/.classpath b/ichat-server/.classpath index 843570c..6c62d67 100644 --- a/ichat-server/.classpath +++ b/ichat-server/.classpath @@ -19,12 +19,15 @@ + + + @@ -36,8 +39,5 @@ - - - diff --git a/ichat-server/WebRoot/WEB-INF/lib/cim-core.1.5.jar b/ichat-server/WebRoot/WEB-INF/lib/cim-core.1.5.jar index 227af62ec2d381cfa2ddbbb385798536451194db..6c305795aa2ce4d7796ccd524133d07c169b0899 100644 GIT binary patch delta 11559 zcmZu%Wk4NGvc=uq-QAr4!QCNvfZ%ost~a>r#YwQ>?i$=30>PaCA$ag$??T?&{j&RJ z{`7R8s;QPaQ`Oa_8&Kglkf>^k&@ea<2;f^qb1DJV7;{@=N($m1mk`LAl^(=~f&pYR zw>NchInq_vT$aIDgGTBJ5SN$CQPv2_M~t6y)XZq4R6almSS84$ScduCHT0|Bkm?|9 zCOx2Y+GGkiH8{b;eN-R!=`rK+gNkk=$H)zfAq7a}yF`Y;YSa4B@zGJms7(5bVRndl!^;2IaO|-Hil2o9&YN34$CRG>j=UE?~Dd^9dWGn+iY2wZC@ka)O0W4URKLD%Vn-=U#W zt=huRurQCFRaS*?qy06+k*Ei5tPaBAGJ$uvuV!Ud^^do!3AOjbc zL6HonS!OL9hc5_0YYD=Q292=D-%qzcteCzE@RvQtmYXd$6g@O19|W$9(A(MbHmh#v z-@C;$@dlhf2J8j@6bNfi>=`~Z)C)R6xL@pjcnY1Tu;1himavkN4!z@Is@gPC{P518 zlic`R_FY$zadOvvxf!|0fTo+_u)8LngxO4sgDAS>D+4@}87gvn+|Z8(-|%vO5a}FkG33f6|zpe5VE_ z0gu835xsSehO%W4MCl7rXi9)3;Da{k#}WAJHe4k1R~x1m)Xp`K>X&p9yYzR)r1iKV z@*H1UDidkFxS@Hq4zdKN9A9p#^&Tsf^tAaO@n#dM>2%^8&hJh zAcDaN>}3i(-uMN#E_d-n(#6+3avQHRr@}5!-q&O74|DEs<&V$t>?hL2d~#L&DykfV zrL@hboSHsyF@FL7PUvC6M->@P=!2yz{;}wu@cQjUyYAED$zV3bk3q3d)@mE7yLFF> z`nhjLaNT;dm8>3s!%F&-g#N6lOy6f1ffOP_I!qIBwt@~S>;ju=)#tVD(&tw7D<8%9 zeDqX_ko3c#BLFNy*x}NjDeKC*h)XJ>h(lZ*9n~b3GeWq}`T%BB6PH(=Te;Q%5m!?x z994z|2UWP#IZe;MXdO%QqE?+s?ADy zezHDJdNPfvCcoR^Lh4&znfdny!F;Q{ z`+f43#}llkbAT_?7vfR(MGQyh2%=3r8d+AjN0gs31H=30%quPY+r%&DPwr zbXoJW;Ivm|Tk64#ig2W@wm3YnMMCp3jqZhZs5s0+63#xx((jC#%xj!y9JE#j#=__1 zPh|>4n?E#TZzEkfbOlAi(BTwIOEMGi1tF=F?~FG#&uLR+8x8F(MA_>3sku6<_v3e! zx`U{Yfq8+ljZ{%?Lzy_eCR%5-7j=c!X`VO&pcK@UyU<-+o_zc_g2=Z}^NdPHiqnxZ zND+f;GTlr+76=+)_Y)%p$GGPN+ldbLEBcli+!YRubc-Cu^R4 znA%C3#JB10{Y9ukcV1AD$*uUgxCbM~5jzGA9tc$vVf{MCSp5vA^6RTyow$IC#ccOY z8(3xJbDTu$t1_mJ(5iDTY#scl(5woD^C2NvwaHw!eN>^d=s-zagwU+%{+m28_5DSw zQuz5(RNVDG7nJC=z}Avz9K{-!PqPANfq}hts`-XOCzC1Bi797;ga>l38h&)2|8Uth zxB)g|vom{IKPc0L70@3B%R;+9Jvu)OCmQoi97Hi0b26e!_2gQcS<;Z8My{R|->`Ma zx=rEeo<$nOCClR*o5xt|OjxWRFs*f=dnMF0!rL~=47-MNTH z7Q;fv8)v%@jxTp}yhrH-Z0(Ji(jwmG0fG5R6Zu+Ss5yCK1_E=#e_V*-cJ@^fSg21H z94_F(JjMm`C4Z3cVmXwpEb{H!NBUT8h{G_Aa}J⪚{~i1DQlM80 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 A+W-In delta 24807 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 sessions =new HashMap(); + // private static HashMap sessions =new HashMap(); - private static final AtomicInteger connectionsCounter = new AtomicInteger(0); @@ -30,12 +24,7 @@ public class ClusterSessionManager implements SessionManager{ * */ public void addSession(String account,CIMSession session) { - if(session!=null) - { - session.setAttribute(CIMConstant.SESSION_KEY, account); - sessions.put(account, session.getIoSession()); - connectionsCounter.incrementAndGet(); - } + /** * 下面 将session 存入数据库 @@ -46,10 +35,9 @@ public class ClusterSessionManager implements SessionManager{ public CIMSession getSession(String account) { - /*//这里查询数据库 - CIMSession session = database.getSession(account); - session.setIoSession(sessions.get(account)); - + //这里查询数据库 + /*CIMSession session = database.getSession(account); + session.setIoSession(((NioSocketAcceptor) ContextHolder.getBean("serverAcceptor")).getManagedSessions().get(session.getNid())); return session;*/ return null; } @@ -65,7 +53,6 @@ public class ClusterSessionManager implements SessionManager{ public void removeSession(CIMSession session) { - sessions.remove(session.getAccount()); //database.removeSession(session.getAttribute(CIMConstant.SESSION_KEY));*/ } @@ -73,7 +60,6 @@ public class ClusterSessionManager implements SessionManager{ public void removeSession(String account) { //database.removeSession(account);*/ - sessions.remove(account); } @@ -81,7 +67,8 @@ public class ClusterSessionManager implements SessionManager{ public boolean containsCIMSession(CIMSession ios) { //return database.containsCIMSession(session.getAccount()); - return sessions.containsKey(ios.getAttribute(CIMConstant.SESSION_KEY)) || sessions.containsValue(ios); + + return false; }