001: /**
002: *
003: */package clime.messadmin.model;
004:
005: import java.util.Date;
006: import java.util.List;
007: import java.util.Map;
008:
009: /**
010: * @author Cédrik LIME
011: */
012: public interface IApplicationInfo {
013: /**
014: * @return Internal ID of this application. This is unique and has not human meaning.
015: */
016: public String getInternalContextPath();
017:
018: /**
019: * @return ClassLoader associated with this ServletContext.
020: */
021: public ClassLoader getClassLoader();
022:
023: /**
024: * @return number of exceptions generated during request processing
025: */
026: public int getNErrors();
027:
028: /**
029: * @return last error generated during request processing, or <code>null</code> if none
030: */
031: public ErrorData getLastError();
032:
033: /**
034: * @return number of hits for this application
035: */
036: public int getHits();
037:
038: /**
039: * @return maximum of concurrent sessions for this application
040: */
041: public long getMaxConcurrentSessions();
042:
043: /**
044: * @return date of maximum of concurrent sessions for this application
045: */
046: public Date getMaxConcurrentSessionsDate();
047:
048: /**
049: * @return total number of created sessions for this application
050: */
051: public long getTotalCreatedSessions();
052:
053: /**
054: * @return total number of network bytes received by this application
055: */
056: public long getRequestTotalLength();
057:
058: /**
059: * @return maximum number of network bytes received by this application for a request
060: */
061: public long getRequestMaxLength();
062:
063: /**
064: * @return date at which maximum number of network bytes received by this application for a request
065: */
066: public Date getRequestMaxLengthDate();
067:
068: /**
069: * @return mean of number of network bytes received by this application for a request
070: */
071: public double getRequestMeanLength();
072:
073: /**
074: * @return Std Dev of number of network bytes received by this application for a request
075: */
076: public double getRequestStdDevLength();
077:
078: /**
079: * @return total number of network bytes sent by this application
080: */
081: public long getResponseTotalLength();
082:
083: /**
084: * @return maximum number of network bytes sent by this application for a response
085: */
086: public long getResponseMaxLength();
087:
088: /**
089: * @return date at which maximum number of network bytes sent by this application for a response
090: */
091: public Date getResponseMaxLengthDate();
092:
093: /**
094: * @return mean of number of network bytes sent by this application for a response
095: */
096: public double getResponseMeanLength();
097:
098: /**
099: * @return Std Dev of number of network bytes sent by this application for a response
100: */
101: public double getResponseStdDevLength();
102:
103: /**
104: * @return current number of active HttpSessions for this application
105: */
106: public int getActiveSessionsCount();
107:
108: /**
109: * @return current number of passive HttpSessions for this application
110: */
111: public int getPassiveSessionsCount();
112:
113: /**
114: * @return memory size of all active HttpSessions for this application
115: */
116: public long getActiveSessionsSize();
117:
118: /**
119: * @return startup time of this application
120: */
121: public Date getStartupTime();
122:
123: /**
124: * @return total number of milliseconds this application has used to service requests
125: */
126: public long getUsedTimeTotal();
127:
128: /**
129: * @return maximum number of milliseconds this application has used to service a request
130: */
131: public long getUsedTimeMax();
132:
133: /**
134: * @return date at which maximum number of milliseconds this application has used to service a request
135: */
136: public Date getUsedTimeMaxDate();
137:
138: /**
139: * @return mean of number of milliseconds this application has used to service requests
140: */
141: public double getUsedTimeMean();
142:
143: /**
144: * @return SdDev of number of milliseconds this application has used to service requests
145: */
146: public double getUsedTimeStdDev();
147:
148: /**
149: * @return application-specific data (user plugin)
150: */
151: public List/*<Map.Entry<String, String>>*/getApplicationSpecificData();
152:
153: // from HttpServletRequest
154:
155: /**
156: * Returns the portion of the request URI that indicates the context
157: * of the request. The context path always comes first in a request
158: * URI. The path starts with a "/" character but does not end with a "/"
159: * character. For servlets in the default (root) context, this method
160: * returns "". The container does not decode this string.
161: *
162: * @return a <code>String</code> specifying the
163: * portion of the request URI that indicates the context
164: * of the request
165: *
166: * @see javax.servlet.http.HttpServletRequest#getContextPath()
167: */
168: public String getContextPath();
169:
170: // from ServletContext
171:
172: /**
173: * Returns the name and version of the servlet container on which
174: * the servlet is running.
175: *
176: * <p>The form of the returned string is
177: * <i>servername</i>/<i>versionnumber</i>.
178: * For example, the JavaServer Web Development Kit may return the string
179: * <code>JavaServer Web Dev Kit/1.0</code>.
180: *
181: * <p>The servlet container may return other optional information
182: * after the primary string in parentheses, for example,
183: * <code>JavaServer Web Dev Kit/1.0 (JDK 1.1.6; Windows NT 4.0 x86)</code>.
184: *
185: * @return a <code>String</code> containing at least the
186: * servlet container name and version number
187: *
188: * @see javax.servlet.ServletContext#getServerInfo()
189: */
190: public String getServerInfo();
191:
192: /**
193: * Returns the name of this web application corresponding to this ServletContext as specified in the deployment
194: * descriptor for this web application by the display-name element.
195: *
196: * @return The name of the web application or null if no name has been declared in the deployment descriptor.
197: * @since Servlet 2.3
198: *
199: * @see javax.servlet.ServletContext#getServletContextName()
200: */
201: public String getServletContextName();
202:
203: /**
204: * Returns a <code>Map<String,String></code> containing the
205: * context-wide initialization parameters.
206: *
207: * <p>This method can make available configuration information useful
208: * to an entire "web application". For example, it can provide a
209: * webmaster's email address or the name of a system that holds
210: * critical data.
211: *
212: * @return a <code>Map<String,String></code> containing at least the
213: * servlet container name and version number
214: *
215: * @see javax.servlet.ServletContext#getInitParameterNames()
216: * @see javax.servlet.ServletContext#getInitParameter(java.lang.String)
217: */
218: public Map/*<String,String>*/getInitParameters();
219:
220: /**
221: * Returns a <code>String</code> containing the value of the named
222: * context-wide initialization parameter, or <code>null</code> if the
223: * parameter does not exist.
224: *
225: * <p>This method can make available configuration information useful
226: * to an entire "web application". For example, it can provide a
227: * webmaster's email address or the name of a system that holds
228: * critical data.
229: *
230: * @param name a <code>String</code> containing the name of the
231: * parameter whose value is requested
232: *
233: * @return a <code>String</code> containing at least the
234: * servlet container name and version number
235: *
236: * @see javax.servlet.ServletContext#getInitParameter(java.lang.String)
237: */
238: public String getInitParameter(String name);
239:
240: /**
241: * Returns the servlet container attributes.
242: * An attribute allows a servlet container to give the
243: * servlet additional information not
244: * already provided by this interface. See your
245: * server documentation for information about its attributes.
246: *
247: * <p>The attribute is returned as a <code>java.lang.Object</code>
248: * or some subclass.
249: * Attribute names should follow the same convention as package
250: * names. The Java Servlet API specification reserves names
251: * matching <code>java.*</code>, <code>javax.*</code>,
252: * and <code>sun.*</code>.
253: *
254: * @return an <code>Map<String,Object></code> containing the
255: * attributes
256: *
257: * @see javax.servlet.ServletContext#getAttributeNames()
258: * @see javax.servlet.ServletContext#getAttribute(java.lang.String)
259: */
260: public Map/*<String,Object>*/getAttributes();
261:
262: /**
263: * Returns the servlet container attribute with the given name,
264: * or <code>null</code> if there is no attribute by that name.
265: * An attribute allows a servlet container to give the
266: * servlet additional information not
267: * already provided by this interface. See your
268: * server documentation for information about its attributes.
269: * A list of supported attributes can be retrieved using
270: * <code>getAttributeNames</code>.
271: *
272: * <p>The attribute is returned as a <code>java.lang.Object</code>
273: * or some subclass.
274: * Attribute names should follow the same convention as package
275: * names. The Java Servlet API specification reserves names
276: * matching <code>java.*</code>, <code>javax.*</code>,
277: * and <code>sun.*</code>.
278: *
279: *
280: * @param name a <code>String</code> specifying the name
281: * of the attribute
282: *
283: * @return an <code>Object</code> containing the value
284: * of the attribute, or <code>null</code>
285: * if no attribute exists matching the given
286: * name
287: *
288: * @see javax.servlet.ServletContext#getAttribute(java.lang.String)
289: *
290: */
291: public Object getAttribute(String name);
292:
293: /**
294: * Binds an object to a given attribute name in this servlet context. If
295: * the name specified is already used for an attribute, this
296: * method will replace the attribute with the new to the new attribute.
297: * <p>If listeners are configured on the <code>ServletContext</code> the
298: * container notifies them accordingly.
299: * <p>
300: * If a null value is passed, the effect is the same as calling
301: * <code>removeAttribute()</code>.
302: *
303: * <p>Attribute names should follow the same convention as package
304: * names. The Java Servlet API specification reserves names
305: * matching <code>java.*</code>, <code>javax.*</code>, and
306: * <code>sun.*</code>.
307: *
308: *
309: * @param name a <code>String</code> specifying the name
310: * of the attribute
311: *
312: * @param object an <code>Object</code> representing the
313: * attribute to be bound
314: *
315: * @see javax.servlet.ServletContext#setAttribute(java.lang.String, java.lang.Object)
316: */
317: public void setAttribute(String name, Object object);
318:
319: /**
320: * Removes the attribute with the given name from
321: * the servlet context. After removal, subsequent calls to
322: * {@link #getAttribute} to retrieve the attribute's value
323: * will return <code>null</code>.
324:
325: * <p>If listeners are configured on the <code>ServletContext</code> the
326: * container notifies them accordingly.
327: *
328: * @param name a <code>String</code> specifying the name
329: * of the attribute to be removed
330: *
331: * @see javax.servlet.ServletContext#removeAttribute(java.lang.String)
332: */
333: public void removeAttribute(String name);
334:
335: }
|