001    /**
002     *  Licensed to the Apache Software Foundation (ASF) under one or more
003     *  contributor license agreements.  See the NOTICE file distributed with
004     *  this work for additional information regarding copyright ownership.
005     *  The ASF licenses this file to You under the Apache License, Version 2.0
006     *  (the "License"); you may not use this file except in compliance with
007     *  the License.  You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     *  Unless required by applicable law or agreed to in writing, software
012     *  distributed under the License is distributed on an "AS IS" BASIS,
013     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     *  See the License for the specific language governing permissions and
015     *  limitations under the License.
016     */
017    
018    package org.apache.geronimo.management.stats;
019    
020    import javax.management.j2ee.statistics.CountStatistic;
021    import javax.management.j2ee.statistics.TimeStatistic;
022    
023    import org.apache.geronimo.management.geronimo.stats.WebModuleStats;
024    
025    /**
026     * Geronimo implementation of the JSR-77 style WebModule interface. This
027     * is not required by JSR-77, but provides useful statistics for a web app
028     * 
029     * @version $Revison$ $Date: 2007-02-04 09:48:10 -0500 (Sun, 04 Feb 2007) $
030     */
031    public class WebModuleStatsImpl extends StatsImpl implements WebModuleStats {
032        // Static data
033    
034        private CountStatisticImpl processingTime;
035    
036        private CountStatisticImpl startupTime;
037    
038        private CountStatisticImpl tldScanTime;
039    
040        // transient data
041        private TimeStatisticImpl sessionAliveTime; // total, max, count
042    
043        private CountStatisticImpl sessionCount;
044    
045        private CountStatisticImpl activeSessionCount;
046    
047        private CountStatisticImpl rejectedSessionCount;
048    
049        private CountStatisticImpl expiredSessionCount;
050    
051        public WebModuleStatsImpl() {
052            processingTime = new CountStatisticImpl("Processing Time", StatisticImpl.UNIT_TIME_MILLISECOND,
053                    "Time to process all the requests ", 0);
054            startupTime = new CountStatisticImpl("Startup Time", StatisticImpl.UNIT_TIME_MILLISECOND,
055                    "Time to start this application", 0);
056            tldScanTime = new CountStatisticImpl("TLD Scan Time", StatisticImpl.UNIT_TIME_MILLISECOND,
057                    "Time to scan TLDs ", 0);
058            sessionAliveTime = new TimeStatisticImpl("Session Alive Time", StatisticImpl.UNIT_TIME_SECOND,
059                    "The time for session");
060            sessionCount = new CountStatisticImpl("Session Count", StatisticImpl.UNIT_COUNT,
061                    "total number of sessions created ", 0);
062            activeSessionCount = new CountStatisticImpl("Active Session Count", StatisticImpl.UNIT_COUNT,
063                    "currently active sessions ", 0);
064            rejectedSessionCount = new CountStatisticImpl("Rejected Session Count", StatisticImpl.UNIT_COUNT,
065                    "rejected sessions ", 0);
066            expiredSessionCount = new CountStatisticImpl("Expired Session Count", StatisticImpl.UNIT_COUNT,
067                    "expired sessions ", 0);
068            addStat("processingTime", processingTime);
069            addStat("startupTime", startupTime);
070            addStat("tldScanTime", tldScanTime);
071            addStat("sessionAliveTime", sessionAliveTime); // better name
072            addStat("sessionCount", sessionCount);
073            addStat("activeSessionCount", activeSessionCount);
074            addStat("rejectedSessionCount", rejectedSessionCount);
075            addStat("expiredSessionCount", expiredSessionCount);
076        }
077    
078        public CountStatistic getProcessingTime() {
079            return processingTime;
080        }
081    
082        public CountStatistic getStartupTime() {
083            return startupTime;
084        }
085    
086        public CountStatistic getTldScanTime() {
087            return tldScanTime;
088        }
089    
090        public TimeStatistic getSessionAliveTime() {
091            return sessionAliveTime;
092        }
093    
094        public CountStatistic getSessionCount() {
095            return sessionCount;
096        }
097    
098        public CountStatistic getActiveSessionCount() {
099            return activeSessionCount;
100        }
101    
102        public CountStatistic getExpiredSessionCount() {
103            return expiredSessionCount;
104        }
105    
106        public CountStatistic getRejectedSessionCount() {
107            return rejectedSessionCount;
108        }
109    
110        /**
111         * These setters are used by native implementation
112         */
113    
114        public void setProcessingTime(long processingTime) {
115            this.processingTime.setCount(processingTime);
116        }
117    
118        // This is static data, need not be refreshed
119        public void setStartupTime(long startupTime) {
120            this.startupTime.setCount(startupTime);
121        }
122    
123        public void setTldScanTime(long tldScanTime) {
124            this.tldScanTime.setCount(tldScanTime);
125        }
126    
127        public void setSessionAliveTime(int count, long minTime, long maxTime, long totalTime) {
128            this.sessionAliveTime.setCount(count);
129            this.sessionAliveTime.setMinTime(minTime);
130            this.sessionAliveTime.setMaxTime(maxTime);
131            this.sessionAliveTime.setTotalTime(totalTime);
132        }
133    
134        public void setSessionCount(int sessionCount) {
135            this.sessionCount.setCount(sessionCount);
136        }
137    
138        public void setActiveSessionCount(int activeSessionCount) {
139            this.activeSessionCount.setCount(activeSessionCount);
140        }
141    
142        public void setExpiredSessionCount(int expiredSessionCount) {
143            this.expiredSessionCount.setCount(expiredSessionCount);
144        }
145    
146        public void setRejectedSessionCount(int rejectedSessionCount) {
147            this.rejectedSessionCount.setCount(rejectedSessionCount);
148        }
149        
150        // Is this needed ?
151        public void setLastSampleTime(long time) {
152            sessionAliveTime.setLastSampleTime(time);
153            activeSessionCount.setLastSampleTime(time);
154            expiredSessionCount.setLastSampleTime(time);
155            rejectedSessionCount.setLastSampleTime(time);
156        }
157    
158    }