Author: sebawagner
Date: Sun Jan 27 02:57:39 2013
New Revision: 1439014
URL: http://svn.apache.org/viewvc?rev=1439014&view=rev
Log:
OPENMEETINGS-460 Refactor memory session cache: Make a spring injected
singleton instead a static instance
Modified:
incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/rooms/Client.java
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/SessionManager.java
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/DatabaseStore.java
Modified:
incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml?rev=1439014&r1=1439013&r2=1439014&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
(original)
+++
incubator/openmeetings/trunk/singlewebapp/WebContent/WEB-INF/openmeetings-applicationContext.xml
Sun Jan 27 02:57:39 2013
@@ -51,17 +51,29 @@
<!-- New Class for the Streaming Handlers -->
<bean id="web.handler"
class="org.apache.openmeetings.remote.red5.ScopeApplicationAdapter" />
-
- <!-- In memory / session stores -->
+
+ <!-- Session configuration start -->
<bean id="openmeetings.SessionManager"
- class="org.apache.openmeetings.session.SessionManager" />
+ class="org.apache.openmeetings.session.SessionManager">
+ <property name="cache">
+ <ref bean="openmeetings.HashMapStore"/> <!-- Memory based
session cache by default -->
+ </property>
+ </bean>
<bean id="openmeetings.EmoticonsManager"
class="org.apache.openmeetings.remote.red5.EmoticonsManager" />
<bean id="openmeetings.WhiteBoardObjectListManager"
class="org.apache.openmeetings.remote.red5.WhiteBoardObjectListManager" />
<bean id="openmeetings.WhiteBoardObjectListManagerById"
class="org.apache.openmeetings.remote.red5.WhiteBoardObjectListManagerById" />
+
+ <bean id="openmeetings.DatabaseStore"
+ class="org.apache.openmeetings.session.store.DatabaseStore" />
+
+ <bean id="openmeetings.HashMapStore" scope="singleton"
+ class="org.apache.openmeetings.session.store.HashMapStore" />
+
+ <!-- Cluster related config start -->
<!-- Start of Services -->
<bean id="xmlcrm.service"
class="org.apache.openmeetings.remote.MainService" />
@@ -239,6 +251,8 @@
<bean id="usersDao"
class="org.apache.openmeetings.data.user.dao.UsersDao" />
<bean id="serverDao"
class="org.apache.openmeetings.data.basic.dao.ServerDao" />
<bean id="chatDao" class="org.apache.openmeetings.data.chat.ChatDao" />
+ <bean id="clientDao"
class="org.apache.openmeetings.data.conference.dao.ClientDao" />
+
<!-- No Interface -->
<bean id="manageCryptStyle"
class="org.apache.openmeetings.utils.crypt.ManageCryptStyle" />
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/rooms/Client.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/rooms/Client.java?rev=1439014&r1=1439013&r2=1439014&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/rooms/Client.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/persistence/beans/rooms/Client.java
Sun Jan 27 02:57:39 2013
@@ -23,11 +23,15 @@ import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
+import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
import javax.persistence.Table;
+import org.apache.openmeetings.persistence.beans.basic.Server;
import org.apache.openmeetings.utils.math.CalendarPatterns;
/**
@@ -367,6 +371,10 @@ public class Client implements Serializa
*/
@Column(name = "sip_transport")
private boolean sipTransport = false;
+
+ @ManyToOne(fetch = FetchType.LAZY)
+ @JoinColumn(name = "id")
+ private Server server;
public Client() {
@@ -833,6 +841,14 @@ public class Client implements Serializa
this.sipTransport = sipTransport;
}
+ public Server getServer() {
+ return server;
+ }
+
+ public void setServer(Server server) {
+ this.server = server;
+ }
+
@Override
public String toString() {
return super.toString() //
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/SessionManager.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/SessionManager.java?rev=1439014&r1=1439013&r2=1439014&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/SessionManager.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/SessionManager.java
Sun Jan 27 02:57:39 2013
@@ -36,7 +36,6 @@ import org.apache.openmeetings.Openmeeti
import org.apache.openmeetings.data.beans.basic.SearchResult;
import org.apache.openmeetings.persistence.beans.basic.Server;
import org.apache.openmeetings.persistence.beans.rooms.Client;
-import org.apache.openmeetings.session.store.HashMapStore;
import org.apache.openmeetings.session.store.IClientPersistenceStore;
import org.apache.openmeetings.utils.crypt.ManageCryptStyle;
import org.red5.logging.Red5LoggerFactory;
@@ -54,8 +53,21 @@ public class SessionManager implements I
protected static final Logger log = Red5LoggerFactory.getLogger(
SessionManager.class,
OpenmeetingsVariables.webAppRootKey);
- protected static IClientPersistenceStore cache = new HashMapStore();
+ /**
+ * Injected via Spring
+ */
+ private IClientPersistenceStore cache;
+ //Needs getters and setters as here it is no "Autowired" bean, as you
can configure different caches
+ public IClientPersistenceStore getCache() {
+ return cache;
+ }
+
+ public void setCache(IClientPersistenceStore cache) {
+ this.cache = cache;
+ }
+
+
private static Set<Long> EMPTY_HASH_SET = new HashSet<Long>();
@Autowired
Modified:
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/DatabaseStore.java
URL:
http://svn.apache.org/viewvc/incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/DatabaseStore.java?rev=1439014&r1=1439013&r2=1439014&view=diff
==============================================================================
---
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/DatabaseStore.java
(original)
+++
incubator/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/session/store/DatabaseStore.java
Sun Jan 27 02:57:39 2013
@@ -22,10 +22,15 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import org.apache.openmeetings.data.conference.dao.ClientDao;
import org.apache.openmeetings.persistence.beans.basic.Server;
import org.apache.openmeetings.persistence.beans.rooms.Client;
+import org.springframework.beans.factory.annotation.Autowired;
public class DatabaseStore implements IClientPersistenceStore {
+
+ @Autowired
+ private ClientDao clientDao;
public void put(Server server, String streamId, Client rcl) {
// TODO Auto-generated method stub