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.management.server;
031:
032: import com.caucho.jmx.Description;
033: import com.caucho.jmx.Units;
034:
035: /**
036: * Represents a protocol connection.
037: *
038: * A typical ObjectName for a Port is
039: *
040: * <pre>
041: * resin:type=Port,port=80,address=INADDR_ANY
042: * </pre>
043: */
044: @Description("The protocol listening to an IP address.")
045: public interface PortMXBean extends ManagedObjectMXBean {
046: /**
047: * Returns the ip address or used to bind the port.
048: */
049: @Description("The configured ip address or host name used to bind the port")
050: public String getAddress();
051:
052: /**
053: * Returns the port's protocol name.
054: */
055: @Description("The configured protocol for the port")
056: public String getProtocolName();
057:
058: /**
059: * Returns the port number used to bind the port.
060: */
061: @Description("The configured port number used to bind the port")
062: public int getPort();
063:
064: @Description("True if the port is using SSL encryption")
065: public boolean isSSL();
066:
067: //
068: // Tuning/Configuration
069: //
070:
071: /**
072: * Returns the minimum number of accept threads
073: */
074: @Description("The minimum number of accept threads")
075: public int getAcceptThreadMin();
076:
077: /**
078: * Returns the maximum number of accept threads
079: */
080: @Description("The maximum number of accept threads")
081: public int getAcceptThreadMax();
082:
083: /**
084: * Returns the operating system listen backlog
085: */
086: @Description("The operating system listen backlog")
087: public int getAcceptListenBacklog();
088:
089: /**
090: * Returns the maximum number of active connections allowed for the port.
091: */
092: @Description("The configured maximum number of current connections")
093: public int getConnectionMax();
094:
095: /**
096: * Returns the maximum number of keepalive connections allowed for the port.
097: */
098: @Description("The configured maximum number of keepalive connections")
099: public int getKeepaliveMax();
100:
101: /**
102: * Returns the maximum total time for keepalive connections
103: */
104: @Description("The maximum total time for keepalive connections")
105: public long getKeepaliveConnectionTimeMax();
106:
107: /**
108: * Returns the timeout for a keepalive connection
109: */
110: @Description("The configured timeout for keepalive connections")
111: public long getKeepaliveTimeout();
112:
113: /**
114: * Returns the timeout for socket reads when waiting for data from a client.
115: *
116: * Corresponds to the functionality described in
117: * {@link java.net.Socket#setSoTimeout(int)}, although the actual
118: * socket connection may be handled in different ways.
119: */
120: @Description("The configured timeout for socket reads when waiting for data from a client")
121: @Units("milliseconds")
122: public long getSocketTimeout();
123:
124: /**
125: * Returns the suspend/comet time max
126: */
127: @Description("The maximum suspend/comet time")
128: @Units("milliseconds")
129: public long getSuspendTimeMax();
130:
131: //
132: // State attributes
133: //
134:
135: /*
136: * Returns the lifecycle state.
137: */
138: @Description("The current lifecycle state")
139: public String getState();
140:
141: //
142: // Statistics
143: //
144:
145: /**
146: * Returns the current number of threads that are servicing requests.
147: */
148: @Description("The current number of threads used by the port")
149: public int getThreadCount();
150:
151: /**
152: * Returns the current number of threads that are servicing requests.
153: */
154: @Description("The current number of threads that are servicing requests")
155: public int getThreadActiveCount();
156:
157: /**
158: * Returns the current number of threads that are idle and
159: * waiting to service requests.
160: */
161: @Description("The current number of threads that are" + " idle and waiting to service requests")
162: public int getThreadIdleCount();
163:
164: /**
165: * Returns the current number of connections that are in the keepalive
166: * state
167: */
168: @Description("The current number of connections that are" + " in the keepalive state")
169: public int getKeepaliveCount();
170:
171: /**
172: * Returns the current number of connections that are in the keepalive
173: * state and are using a thread to maintain the connection.
174: */
175: @Description("The current number of connections that are" + " in the keepalive state and are using" + " a thread to maintain the connection")
176: public int getKeepaliveThreadCount();
177:
178: /**
179: * Returns the current number of connections that are in the keepalive
180: * state and are using select to maintain the connection.
181: */
182: @Description("The current number of connections that are" + " in the keepalive state and are using" + " select to maintain the connection")
183: public int getKeepaliveSelectCount();
184:
185: /**
186: * Returns the current number of comet-socket idle and
187: * waiting to service requests.
188: */
189: @Description("The current number of comet sockets that are" + " idle and waiting to service requests")
190: public int getCometIdleCount();
191:
192: /**
193: * Returns the total number of requests serviced by the server
194: * since it started.
195: */
196: @Description("The total number of requests serviced by the" + " server since it started")
197: public long getRequestCountTotal();
198:
199: /**
200: * Returns the number of requests that have ended up in the keepalive state
201: * for this server in it's lifetime.
202: */
203: @Description("The total number of requests that have ended" + " up in the keepalive state")
204: public long getKeepaliveCountTotal();
205:
206: /**
207: * The total number of connections that have terminated with
208: * {@link com.caucho.vfs.ClientDisconnectException}.
209: */
210: @Description("The total number of connections that have" + " terminated with a client disconnect")
211: public long getClientDisconnectCountTotal();
212:
213: /**
214: * Returns the total duration in milliseconds that requests serviced by
215: * this port have taken.
216: */
217: @Description("The total duration in milliseconds that" + " requests serviced by this service have taken")
218: @Units("milliseconds")
219: public long getRequestTimeTotal();
220:
221: /**
222: * Returns the total number of bytes that requests serviced by this
223: * port have read.
224: */
225: @Description("The total number of bytes that requests" + " serviced by this port have read")
226: @Units("milliseconds")
227: public long getReadBytesTotal();
228:
229: /**
230: * Returns the total number of bytes that requests serviced by this
231: * port have written.
232: */
233: @Description("The total number of bytes that requests" + " serviced by this port have written")
234: @Units("milliseconds")
235: public long getWriteBytesTotal();
236:
237: //
238: // Operations
239: //
240:
241: /**
242: * Enables the port, letting it listen to new connections.
243: */
244: public void start();
245:
246: /**
247: * Disables the port, stopping it from listening to connections.
248: */
249: public void stop();
250: }
|