优化功能

This commit is contained in:
xj753277@126.com 2014-06-16 10:29:09 +08:00
parent a4278c6ead
commit bf68ca74fd
5 changed files with 31 additions and 33 deletions

View File

@ -27,7 +27,8 @@ public class CIMSession implements Serializable{
private IoSession session; private IoSession session;
private String id;//session全局ID private String gid;//session全局ID
private Long nid;//session在本台服务器上的ID
private String deviceId;//客户端设备ID private String deviceId;//客户端设备ID
private String host;//session绑定的服务器IP private String host;//session绑定的服务器IP
private String account;//session绑定的账号 private String account;//session绑定的账号
@ -40,6 +41,7 @@ public class CIMSession implements Serializable{
public CIMSession(IoSession session) { public CIMSession(IoSession session) {
this.session = session; this.session = session;
this.nid = session.getId();
} }
public CIMSession() 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() { public String getDeviceId() {
return deviceId; return deviceId;
@ -95,12 +111,7 @@ public class CIMSession implements Serializable{
} }
public void setId(String id) {
this.id = id;
}
public String getHost() { public String getHost() {
return host; return host;

View File

@ -19,12 +19,15 @@
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/antlr-2.7.6.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/antlr-2.7.6.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/asm.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/asm.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/aspectjweaver.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/aspectjweaver.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/cim-core.1.5.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-fileupload-1.2.1.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-fileupload-1.2.1.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-io-2.4.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-io-2.4.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-lang-2.3.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-lang-2.3.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-logging-1.0.4.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/commons-logging-1.0.4.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/freemarker-2.3.15.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/freemarker-2.3.15.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/gson-2.1.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/gson-2.1.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/httpclient-4.3.4.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/httpcore-4.3.2.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/jstl-1.2.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/jstl-1.2.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/log4j.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/log4j.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/mina-core-2.0.7.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/mina-core-2.0.7.jar"/>
@ -36,8 +39,5 @@
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/struts2-core-2.1.8.1.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/struts2-core-2.1.8.1.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/xstream-1.3.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/xstream-1.3.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/xwork-core-2.1.6.jar"/> <classpathentry kind="lib" path="WebRoot/WEB-INF/lib/xwork-core-2.1.6.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/cim-core.1.5.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/httpclient-4.3.4.jar"/>
<classpathentry kind="lib" path="WebRoot/WEB-INF/lib/httpcore-4.3.2.jar"/>
<classpathentry kind="output" path="WebRoot/WEB-INF/classes"/> <classpathentry kind="output" path="WebRoot/WEB-INF/classes"/>
</classpath> </classpath>

View File

@ -34,7 +34,7 @@ public class BindHandler implements CIMRequestHandler {
newSession.setAccount(account); newSession.setAccount(account);
newSession.setDeviceId(message.get("deviceId")); newSession.setDeviceId(message.get("deviceId"));
newSession.setId(UUID.randomUUID().toString()); newSession.setGid(UUID.randomUUID().toString());
newSession.setHost(InetAddress.getLocalHost().getHostAddress()); newSession.setHost(InetAddress.getLocalHost().getHostAddress());
newSession.setChannel( message.get("channel")); newSession.setChannel( message.get("channel"));
newSession.setDeviceModel(message.get("device")); newSession.setDeviceModel(message.get("device"));

View File

@ -2,12 +2,7 @@
package com.farsunset.ichat.cim.session; package com.farsunset.ichat.cim.session;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.mina.core.session.IoSession;
import com.farsunset.cim.nio.constant.CIMConstant;
import com.farsunset.cim.nio.session.CIMSession; import com.farsunset.cim.nio.session.CIMSession;
import com.farsunset.cim.nio.session.SessionManager; import com.farsunset.cim.nio.session.SessionManager;
@ -19,10 +14,9 @@ import com.farsunset.cim.nio.session.SessionManager;
public class ClusterSessionManager implements SessionManager{ public class ClusterSessionManager implements SessionManager{
private static HashMap<String,IoSession> sessions =new HashMap<String,IoSession>(); // private static HashMap<String,IoSession> sessions =new HashMap<String,IoSession>();
private static final AtomicInteger connectionsCounter = new AtomicInteger(0);
@ -30,12 +24,7 @@ public class ClusterSessionManager implements SessionManager{
* *
*/ */
public void addSession(String account,CIMSession session) { public void addSession(String account,CIMSession session) {
if(session!=null)
{
session.setAttribute(CIMConstant.SESSION_KEY, account);
sessions.put(account, session.getIoSession());
connectionsCounter.incrementAndGet();
}
/** /**
* 下面 将session 存入数据库 * 下面 将session 存入数据库
@ -46,10 +35,9 @@ public class ClusterSessionManager implements SessionManager{
public CIMSession getSession(String account) { public CIMSession getSession(String account) {
/*//这里查询数据库 //这里查询数据库
CIMSession session = database.getSession(account); /*CIMSession session = database.getSession(account);
session.setIoSession(sessions.get(account)); session.setIoSession(((NioSocketAcceptor) ContextHolder.getBean("serverAcceptor")).getManagedSessions().get(session.getNid()));
return session;*/ return session;*/
return null; return null;
} }
@ -65,7 +53,6 @@ public class ClusterSessionManager implements SessionManager{
public void removeSession(CIMSession session) { public void removeSession(CIMSession session) {
sessions.remove(session.getAccount());
//database.removeSession(session.getAttribute(CIMConstant.SESSION_KEY));*/ //database.removeSession(session.getAttribute(CIMConstant.SESSION_KEY));*/
} }
@ -73,7 +60,6 @@ public class ClusterSessionManager implements SessionManager{
public void removeSession(String account) { public void removeSession(String account) {
//database.removeSession(account);*/ //database.removeSession(account);*/
sessions.remove(account);
} }
@ -81,7 +67,8 @@ public class ClusterSessionManager implements SessionManager{
public boolean containsCIMSession(CIMSession ios) public boolean containsCIMSession(CIMSession ios)
{ {
//return database.containsCIMSession(session.getAccount()); //return database.containsCIMSession(session.getAccount());
return sessions.containsKey(ios.getAttribute(CIMConstant.SESSION_KEY)) || sessions.containsValue(ios);
return false;
} }