Index: admin/src/main/java/org/glassfish/web/admin/monitor/RequestStatsProvider.java =================================================================== --- admin/src/main/java/org/glassfish/web/admin/monitor/RequestStatsProvider.java (revision 52787) +++ admin/src/main/java/org/glassfish/web/admin/monitor/RequestStatsProvider.java (working copy) @@ -53,6 +53,7 @@ import org.glassfish.gmbal.Description; import org.glassfish.gmbal.ManagedObject; import org.glassfish.gmbal.ManagedAttribute; +import com.sun.grizzly.tcp.RequestInfo; /** * Provides the monitoring data at the Web container level @@ -196,7 +197,10 @@ @ProbeParam("serverPort") int serverPort, @ProbeParam("contextPath") String contextPath, @ProbeParam("servletPath") String servletPath, - @ProbeParam("statusCode") int statusCode) { + @ProbeParam("statusCode") int statusCode, + @ProbeParam("method") String method, + @ProbeParam("uri") String uri, + @ProbeParam("reqInfo") RequestInfo reqInfo) { if (logger.isLoggable(Level.FINEST)) { logger.finest( "[TM]requestEndEvent Unprocessed received - virtual-server = " + Index: admin/src/main/java/org/glassfish/web/admin/monitor/HttpServiceStatsProviderBootstrap.java =================================================================== --- admin/src/main/java/org/glassfish/web/admin/monitor/HttpServiceStatsProviderBootstrap.java (revision 52787) +++ admin/src/main/java/org/glassfish/web/admin/monitor/HttpServiceStatsProviderBootstrap.java (working copy) @@ -100,7 +100,7 @@ "http-service", PluginPoint.SERVER, "http-service/" + vs.getId() + "/request", - new HttpServiceStatsProvider(vs.getId(), vs.getNetworkListeners())); + new HttpServiceStatsProvider(vs.getId(), vs.getNetworkListeners(), config.getNetworkConfig())); } } } Index: admin/src/main/java/org/glassfish/web/admin/monitor/HttpServiceStatsProvider.java =================================================================== --- admin/src/main/java/org/glassfish/web/admin/monitor/HttpServiceStatsProvider.java (revision 52787) +++ admin/src/main/java/org/glassfish/web/admin/monitor/HttpServiceStatsProvider.java (working copy) @@ -54,7 +54,10 @@ import org.glassfish.gmbal.AMXMetadata; import org.glassfish.gmbal.ManagedAttribute; import org.glassfish.gmbal.ManagedObject; +import com.sun.grizzly.config.dom.NetworkConfig; +import com.sun.grizzly.config.dom.NetworkListener; import org.jvnet.hk2.component.PostConstruct; +import com.sun.grizzly.tcp.RequestInfo; /** * Provides the monitoring data at the Web container level @@ -70,14 +73,14 @@ private static final Logger logger = Logger.getLogger( HttpServiceStatsProvider.class.getName()); + private NetworkConfig networkConfig; + private static final String ERROR_COUNT_DESCRIPTION = "Cumulative value of the error count, with error count representing the number of cases where the response code was greater than or equal to 400"; private static final String MAX_TIME_DESCRIPTION = "Longest response time for a request; not a cumulative value, but the largest response time from among the response times"; private static final String PROCESSING_TIME_DESCRIPTION = "Average request processing time"; - private static final String REQUEST_COUNT_DESCRIPTION = - "Cumulative number of requests processed so far"; private static final String COUNT_BYTES_RECEIVED_DESCRIPTION = "The number of bytes received"; private static final String COUNT_BYTES_TRANSMITTED_DESCRIPTION = @@ -86,14 +89,10 @@ "The number of open connections"; private static final String COUNT_REQUESTS_DESCRIPTION = "The number of requests received"; - private static final String MAX_BYTE_TRANSMISSION_RATE_DESCRIPTION = - "The maximum rate at which data was transmitted over some server-defined interval"; private static final String MAX_OPEN_CONNECTIONS_DESCRIPTION = "The maximum number of open connections"; private static final String METHOD_DESCRIPTION = "The method of the last request serviced"; - private static final String RATE_BYTES_TRANSMITTED_DESCRIPTION = - "The rate (in bytes per second) at which data was transmitted over some server-defined interval"; private static final String URI_DESCRIPTION = "The URI of the last request serviced"; private static final String COUNT_200_DESCRIPTION = @@ -137,14 +136,10 @@ StatisticImpl.UNIT_COUNT, COUNT_OPEN_CONNECTIONS_DESCRIPTION); private CountStatisticImpl countRequests = new CountStatisticImpl("CountRequests", StatisticImpl.UNIT_COUNT, COUNT_REQUESTS_DESCRIPTION); - private CountStatisticImpl maxByteTransmissionRate = new CountStatisticImpl("MaxByteTransmissionRate", - StatisticImpl.UNIT_COUNT, MAX_BYTE_TRANSMISSION_RATE_DESCRIPTION); private CountStatisticImpl maxOpenConnections = new CountStatisticImpl("MaxOpenConnections", StatisticImpl.UNIT_COUNT, MAX_OPEN_CONNECTIONS_DESCRIPTION); private StringStatisticImpl method = new StringStatisticImpl("Method", "String", METHOD_DESCRIPTION); - private CountStatisticImpl rateBytesTransmitted = new CountStatisticImpl("RateBytesTransmitted", - StatisticImpl.UNIT_COUNT, RATE_BYTES_TRANSMITTED_DESCRIPTION); private StringStatisticImpl uri = new StringStatisticImpl("Uri", "String", URI_DESCRIPTION); @@ -197,9 +192,11 @@ }; - public HttpServiceStatsProvider(String vsName, String listeners) { + public HttpServiceStatsProvider(String vsName, String listeners, NetworkConfig networkConfig) { this.virtualServerName = vsName; this.networkListeners = listeners == null ? new String[0] : listeners.split(","); + this.networkConfig = networkConfig; + } public void postConstruct() { @@ -243,12 +240,6 @@ return countRequests; } - @ManagedAttribute(id="maxbytetransmissionrate") - @Description(MAX_BYTE_TRANSMISSION_RATE_DESCRIPTION) - public CountStatistic getMaxByteTransmissionRate() { - return maxByteTransmissionRate; - } - @ManagedAttribute(id="maxopenconnections") @Description(MAX_OPEN_CONNECTIONS_DESCRIPTION) public CountStatistic getMaxOpenConnections() { @@ -261,12 +252,6 @@ return method; } - @ManagedAttribute(id="ratebytestransmitted") - @Description(RATE_BYTES_TRANSMITTED_DESCRIPTION) - public CountStatistic getRateBytesTransmitted() { - return rateBytesTransmitted; - } - @ManagedAttribute(id="uri") @Description(URI_DESCRIPTION) public StringStatistic getUri() { @@ -384,12 +369,19 @@ @ProbeParam("serverPort") int serverPort, @ProbeParam("contextPath") String contextPath, @ProbeParam("servletPath") String servletPath, - @ProbeParam("statusCode") int statusCode) { + @ProbeParam("statusCode") int statusCode, + @ProbeParam("method") String method, + @ProbeParam("uri") String uri, + @ProbeParam("reqInfo") RequestInfo reqInfo) { if ((hostName != null) && (hostName.equals(virtualServerName))) { TimeStatData tsd = individualData.get(); tsd.setExitTime(System.currentTimeMillis()); requestProcessTime.incrementCount(tsd.getTotalTime()); incrementStatsCounter(statusCode); + this.method.setCurrent(method); + this.uri.setCurrent(uri); + this.countBytesReceived.increment(reqInfo.getRequestBytesReceived()); + this.countBytesTransmitted.increment(reqInfo.getRequestBytesSent()); if (logger.isLoggable(Level.FINEST)) { logger.finest( "[TM]requestEndEvent received - virtual-server = " + @@ -410,8 +402,12 @@ @ProbeParam("address") String address) { for (String listener : networkListeners) { if (listener.equals(listenerName)) { - individualData.get().setEntryTime(System.currentTimeMillis()); countOpenConnections.increment(); + NetworkListener networkListener = networkConfig.getNetworkListener(listenerName); + if (networkListener != null) { + maxOpenConnections.setCount( + Integer.valueOf(networkListener.findProtocol().getHttp().getMaxConnections())); + } } } if (logger.isLoggable(Level.FINEST)) { @@ -519,10 +515,8 @@ this.countBytesTransmitted.reset(); this.countOpenConnections.reset(); this.countRequests.reset(); - this.maxByteTransmissionRate.reset(); this.maxOpenConnections.reset(); this.method.reset(); - this.rateBytesTransmitted.reset(); this.uri.reset(); } } Index: admin/src/main/java/org/glassfish/web/admin/monitor/RequestProbeProvider.java =================================================================== --- admin/src/main/java/org/glassfish/web/admin/monitor/RequestProbeProvider.java (revision 52787) +++ admin/src/main/java/org/glassfish/web/admin/monitor/RequestProbeProvider.java (working copy) @@ -41,6 +41,7 @@ package org.glassfish.web.admin.monitor; import org.glassfish.external.probe.provider.annotations.*; +import com.sun.grizzly.tcp.RequestInfo; /** * Provider interface for HTTP request/response related probes. @@ -65,5 +66,9 @@ @ProbeParam("serverPort") int serverPort, @ProbeParam("contextPath") String contextPath, @ProbeParam("servletPath") String servletPath, - @ProbeParam("statusCode") int statusCode) {} + @ProbeParam("statusCode") int statusCode, + @ProbeParam("method") String method, + @ProbeParam("uri") String uri, + @ProbeParam("reqInfo") RequestInfo reqInfo) {} + } Index: web-core/src/main/java/org/apache/catalina/connector/CoyoteAdapter.java =================================================================== --- web-core/src/main/java/org/apache/catalina/connector/CoyoteAdapter.java (revision 52787) +++ web-core/src/main/java/org/apache/catalina/connector/CoyoteAdapter.java (working copy) @@ -337,7 +337,7 @@ try { connector.requestEndEvent(request.getRequest(), request.getHost(), request.getContext(), - response.getStatus()); + response.getStatus(), req.getRequestProcessor()); } finally { request.unlockSession(); } Index: web-core/src/main/java/org/apache/catalina/connector/Connector.java =================================================================== --- web-core/src/main/java/org/apache/catalina/connector/Connector.java (revision 52787) +++ web-core/src/main/java/org/apache/catalina/connector/Connector.java (working copy) @@ -61,6 +61,7 @@ import com.sun.appserv.ProxyHandler; import com.sun.grizzly.tcp.Adapter; import com.sun.grizzly.tcp.ProtocolHandler; +import com.sun.grizzly.tcp.RequestInfo; import com.sun.grizzly.util.IntrospectionUtils; import com.sun.grizzly.util.http.mapper.Mapper; import org.apache.catalina.*; @@ -1238,7 +1239,7 @@ * @param statusCode the response status code */ public void requestEndEvent(HttpServletRequest request, Host host, - Context context, int statusCode) { + Context context, int statusCode, RequestInfo info) { // Deliberate noop }; Index: web-glue/src/main/java/com/sun/enterprise/web/connector/coyote/PECoyoteConnector.java =================================================================== --- web-glue/src/main/java/com/sun/enterprise/web/connector/coyote/PECoyoteConnector.java (revision 52787) +++ web-glue/src/main/java/com/sun/enterprise/web/connector/coyote/PECoyoteConnector.java (working copy) @@ -48,6 +48,7 @@ import com.sun.enterprise.web.connector.extension.GrizzlyConfig; import com.sun.enterprise.web.pwc.connector.coyote.PwcCoyoteRequest; import com.sun.grizzly.config.dom.*; +import com.sun.grizzly.tcp.RequestInfo; import com.sun.grizzly.util.IntrospectionUtils; import com.sun.logging.LogDomains; import org.apache.catalina.*; @@ -1211,7 +1212,7 @@ */ @Override public void requestEndEvent(HttpServletRequest request, Host host, - Context context, int statusCode) { + Context context, int statusCode, RequestInfo reqInfo) { if (requestProbeProvider != null) { String appName = null; if (context != null) { @@ -1225,7 +1226,7 @@ appName, hostName, request.getServerName(), request.getServerPort(), request.getContextPath(), request.getServletPath(), - statusCode); + statusCode, request.getMethod(), request.getRequestURI(), reqInfo); } };