KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > outerj > daisy > repository > serverimpl > SystemInfoImpl


1 /*
2  * Copyright 2004 Outerthought bvba and Schaubroeck nv
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy of
6  * the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations under
14  * the License.
15  */

16 package org.outerj.daisy.repository.serverimpl;
17
18 import java.util.Date JavaDoc;
19
20 import javax.management.MBeanServer JavaDoc;
21 import javax.management.ObjectName JavaDoc;
22
23 import org.apache.avalon.framework.activity.Initializable;
24 import org.apache.avalon.framework.service.ServiceException;
25 import org.apache.avalon.framework.service.ServiceManager;
26 import org.apache.avalon.framework.service.Serviceable;
27 import org.outerj.daisy.repository.RepositoryManager;
28
29 /**
30  * @avalon.component version="1.0" name="systeminfo" lifestyle="singleton"
31  */

32
33 public class SystemInfoImpl implements SystemInfoImplMBean, Serviceable, Initializable {
34     private final long systemStartTime;
35
36     private String JavaDoc serverVersion;
37
38     private ServiceManager serviceManager;
39
40     public SystemInfoImpl() {
41         systemStartTime = System.currentTimeMillis();
42     }
43
44     /**
45      * @avalon.dependency key="repository-manager" type="org.outerj.daisy.repository.RepositoryManager"
46      * @avalon.dependency key="mbeanserver" type="javax.management.MBeanServer"
47      */

48     public void service(ServiceManager serviceManager) throws ServiceException {
49         this.serviceManager = serviceManager;
50     }
51
52     public void initialize() throws Exception JavaDoc {
53         RepositoryManager repositoryManager = (RepositoryManager) serviceManager.lookup("repository-manager");
54         try {
55             serverVersion = repositoryManager.getRepositoryServerVersion();
56         } finally {
57             serviceManager.release(repositoryManager);
58         }
59         
60         MBeanServer JavaDoc mbeanServer = (MBeanServer JavaDoc) serviceManager.lookup("mbeanserver");
61         try {
62             mbeanServer.registerMBean(this, new ObjectName JavaDoc("Daisy:name=SystemInfo"));
63         } finally {
64             serviceManager.release(mbeanServer);
65         }
66     }
67
68     public long getFreeVmMemory() {
69         return Runtime.getRuntime().freeMemory();
70     }
71
72     public String JavaDoc getUpTime() {
73         // Runtime.getRuntime().
74
long timeDifference = System.currentTimeMillis() - systemStartTime;
75
76         long days = timeDifference / (1000 * 3600 * 24);
77         timeDifference %= 1000 * 3600 * 24;
78         long hours = timeDifference / (1000 * 3600);
79         timeDifference %= 1000 * 3600;
80         long minutes = timeDifference / (1000 * 60);
81         timeDifference %= 1000 * 60;
82         long seconds = timeDifference / 1000;
83
84         return "The system is up for " + days + " days, " + hours + " hours, " + minutes + " minutes, " + seconds + " seconds.";
85     }
86
87     public void triggerGarbageCollector() {
88         System.gc();
89     }
90
91     public Date JavaDoc getStartTime() {
92         return new Date JavaDoc(systemStartTime);
93     }
94
95     public long getMaxVmMemory() {
96         return Runtime.getRuntime().maxMemory();
97     }
98
99     public long getTotalVmMemory() {
100         return Runtime.getRuntime().totalMemory();
101     }
102
103     public int getAvailableProcessors() {
104         return Runtime.getRuntime().availableProcessors();
105     }
106
107     public String JavaDoc getVmMemoryFormatted() {
108         return formatSizeInMb(getFreeVmMemory()) + " of " + formatSizeInMb(getTotalVmMemory()) + " (max " + formatSizeInMb(getMaxVmMemory()) + ")";
109     }
110
111     private String JavaDoc formatSizeInMb(long sizeInKb) {
112         long sizeInMb = sizeInKb / (1024 * 1024);
113         return sizeInMb + "M";
114     }
115
116     public String JavaDoc getFileEncoding() {
117         return System.getProperty("file.encoding");
118     }
119
120     public String JavaDoc getServerVersion() {
121         return serverVersion;
122     }
123 }
124
Popular Tags