优化功能

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 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;

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/asm.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-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-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/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/log4j.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/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/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"/>
</classpath>

View File

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

View File

@ -2,12 +2,7 @@
package com.farsunset.ichat.cim.session;
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.SessionManager;
@ -19,10 +14,9 @@ import com.farsunset.cim.nio.session.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) {
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;
}