001: /*
002: * Copyright (c) 1998-2008 Caucho Technology -- all rights reserved
003: *
004: * This file is part of Resin(R) Open Source
005: *
006: * Each copy or derived work must preserve the copyright notice and this
007: * notice unmodified.
008: *
009: * Resin Open Source is free software; you can redistribute it and/or modify
010: * it under the terms of the GNU General Public License as published by
011: * the Free Software Foundation; either version 2 of the License, or
012: * (at your option) any later version.
013: *
014: * Resin Open Source is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
017: * of NON-INFRINGEMENT. See the GNU General Public License for more
018: * details.
019: *
020: * You should have received a copy of the GNU General Public License
021: * along with Resin Open Source; if not, write to the
022: *
023: * Free Software Foundation, Inc.
024: * 59 Temple Place, Suite 330
025: * Boston, MA 02111-1307 USA
026: *
027: * @author Scott Ferguson
028: */
029:
030: package com.caucho.server.session;
031:
032: import com.caucho.management.server.AbstractManagedObject;
033: import com.caucho.management.server.PersistentStoreMXBean;
034: import com.caucho.management.server.SessionManagerMXBean;
035: import com.caucho.management.server.WebAppMXBean;
036: import com.caucho.server.cluster.Store;
037:
038: import java.util.logging.Logger;
039:
040: /**
041: * Implementation of the SessionManager's administration mbean.
042: */
043: public class SessionManagerAdmin extends AbstractManagedObject
044: implements SessionManagerMXBean {
045: private static final Logger log = Logger
046: .getLogger(SessionManagerAdmin.class.getName());
047:
048: private final SessionManager _manager;
049:
050: public SessionManagerAdmin(SessionManager manager) {
051: _manager = manager;
052:
053: registerSelf();
054: }
055:
056: /**
057: * The SessionManager doesn't have a name.
058: */
059: public String getName() {
060: return null;
061: }
062:
063: /**
064: * Returns the owning web-app's
065: */
066: public WebAppMXBean getWebApp() {
067: return _manager.getWebApp().getAdmin();
068: }
069:
070: //
071: // Configuration attributes
072: //
073:
074: /**
075: * True if the session should be serialized for storage, even if
076: * no attributes in the session have been set.
077: */
078: public boolean isAlwaysSaveSession() {
079: return _manager.getAlwaysSaveSession();
080: }
081:
082: /**
083: * If true, the server's cluster index is appended to the cookie value.
084: */
085: public boolean isCookieAppendServerIndex() {
086: return _manager.isCookieAppendServerIndex();
087: }
088:
089: /**
090: * The host domain used for session cookies
091: */
092: public String getCookieDomain() {
093: return _manager.getCookieDomain();
094: }
095:
096: /**
097: * True if the cookie should only be used for non-secure sessions.
098: */
099: public boolean isCookieHttpOnly() {
100: return _manager.isCookieHttpOnly();
101: }
102:
103: /**
104: * The length of the generated cookie
105: */
106: public long getCookieLength() {
107: return _manager.getCookieLength();
108: }
109:
110: /**
111: * The cookie max-age sent to the browser.
112: */
113: public long getCookieMaxAge() {
114: return _manager.getCookieMaxAge();
115: }
116:
117: /**
118: * Returns the cookie name for sessions.
119: */
120: public String getCookieName() {
121: return _manager.getCookieName();
122: }
123:
124: /**
125: * Returns the cookie port for sessions.
126: */
127: public String getCookiePort() {
128: return _manager.getCookiePort();
129: }
130:
131: /**
132: * True if the cookie should only be used for secure sessions.
133: */
134: public boolean isCookieSecure() {
135: return _manager.getCookieSecure();
136: }
137:
138: /**
139: * Returns the cookie version number.
140: */
141: public int getCookieVersion() {
142: return _manager.getCookieVersion();
143: }
144:
145: /**
146: * Returns true if cookies are enabled.
147: */
148: public boolean isEnableCookies() {
149: return _manager.enableSessionCookies();
150: }
151:
152: /**
153: * Returns true if url-rewriting is enabled.
154: */
155: public boolean isEnableURLRewriting() {
156: return _manager.enableSessionUrls();
157: }
158:
159: /**
160: * Returns true if persistent sessions should ignore serialization errors
161: */
162: public boolean isIgnoreSerializationErrors() {
163: return _manager.getIgnoreSerializationErrors();
164: }
165:
166: /**
167: * True if sessions should invalidate only after calling listeners.
168: */
169: public boolean isInvalidateAfterListener() {
170: return _manager.isInvalidateAfterListener();
171: }
172:
173: /**
174: * True if sessions should reuse available session cookie values.
175: */
176: public boolean isReuseSessionId() {
177: return _manager.getReuseSessionId() != 0;
178: }
179:
180: /**
181: * Returns the save mode.
182: */
183: public String getSaveMode() {
184: return _manager.getSaveMode();
185: }
186:
187: /**
188: * Returns the maximum number of sessions.
189: */
190: public int getSessionMax() {
191: return _manager.getSessionMax();
192: }
193:
194: /**
195: * Returns session timeout (in ms)
196: */
197: public long getSessionTimeout() {
198: return _manager.getSessionTimeout();
199: }
200:
201: /**
202: * Returns the object name for the persistent store
203: */
204: public PersistentStoreMXBean getPersistentStore() {
205: return null;
206: }
207:
208: /**
209: * Returns the active sessions.
210: */
211: public int getActiveSessionCount() {
212: return _manager.getActiveSessionCount();
213: }
214:
215: /**
216: * Returns the active sessions.
217: */
218: public long getSessionActiveCount() {
219: return _manager.getSessionActiveCount();
220: }
221:
222: /**
223: * Returns the session create count
224: */
225: public long getSessionCreateCountTotal() {
226: return _manager.getSessionCreateCount();
227: }
228:
229: /**
230: * Returns the session invalidate count
231: */
232: public long getSessionInvalidateCountTotal() {
233: return _manager.getSessionInvalidateCount();
234: }
235:
236: /**
237: * Returns the session timeout count
238: */
239: public long getSessionTimeoutCountTotal() {
240: return _manager.getSessionTimeoutCount();
241: }
242:
243: /**
244: * Returns the session store type
245: */
246: public String getSessionStoreType() {
247: Store store = _manager.getSessionStore();
248:
249: if (store == null)
250: return null;
251:
252: String className = store.getStoreManager().getClass().getName();
253:
254: int p = className.lastIndexOf('.');
255:
256: return className.substring(p + 1);
257: }
258:
259: /**
260: * Unregisters the object with JMX.
261: */
262: public void unregister() {
263: unregisterSelf();
264: }
265:
266: public String toString() {
267: return "SessionManagerAdmin[" + getObjectName() + "]";
268: }
269: }
|