55import org .slf4j .Logger ;
66import org .slf4j .LoggerFactory ;
77
8+ import java .io .IOException ;
9+ import java .io .InputStream ;
810import java .net .InetAddress ;
11+ import java .net .URL ;
12+ import java .util .Enumeration ;
13+ import java .util .HashMap ;
14+ import java .util .Map ;
15+ import java .util .jar .Attributes ;
16+ import java .util .jar .JarFile ;
17+ import java .util .jar .Manifest ;
918
1019public class Env {
1120 // Logger
@@ -14,7 +23,6 @@ public class Env {
1423 // Data
1524 private String mHostname = "" ;
1625 private String mIP = "" ;
17- private int mProcessorCount = 0 ;
1826 private String mVersionString = "" ;
1927 private String mJarFilename = "" ;
2028
@@ -56,30 +64,15 @@ public void init() {
5664 mLogger .error ("Failed to get IP" , e );
5765 }
5866
59- // Processor Count
60- try {
61- mProcessorCount = Runtime .getRuntime ().availableProcessors ();
62- } catch (Exception e ) {
63- mLogger .error ("Filed to get processor count" , e );
64- }
65-
6667 // Version
6768 try {
68- mVersionString = Util . getApplicationVersion ();
69+ mVersionString = parseApplicationVersion ();
6970 } catch (Exception e ) {
7071 mLogger .error ("Failed to get version" , e );
7172 }
7273
7374 // Jar File Name
74- String javaClassPath = System .getProperty ("java.class.path" );
75- String jarFilename = "" ;
76- if (StringUtils .isBlank (javaClassPath ) == false ) {
77- String [] temp = StringUtils .split (javaClassPath , "/" );
78- if (temp .length > 0 ) {
79- jarFilename = temp [temp .length - 1 ];
80- }
81- }
82- mJarFilename = jarFilename ;
75+ mJarFilename = parseJarFilename ();
8376
8477 // End
8578 logging ();
@@ -89,35 +82,31 @@ public void init() {
8982 * Logging
9083 */
9184 public void logging () {
92- // Begin
85+ Map < String , Object > values = values ();
9386 mLogger .info ("------------------------------------------------------------------------" );
9487 mLogger .info ("Application Environments" );
9588 mLogger .info ("------------------------------------------------------------------------" );
96-
97- // Hostname
98- mLogger .info ("Hostname = " + mHostname );
99-
100- // IP
101- mLogger .info ("IP = " + mIP );
102-
103- // Processor Count
104- mLogger .info ("Processor count = " + mProcessorCount );
105-
106- // Version
107- mLogger .info ("Version = " + mVersionString );
108-
109- // Jar File Name
110- mLogger .info ("Jar filename = " + mJarFilename );
111-
112- // End
89+ values .forEach ((k , v ) -> mLogger .info (k + " = " + v ));
11390 mLogger .info ("------------------------------------------------------------------------" );
11491 }
11592
11693 /**
117- * String of app version
94+ * Get all values
11895 */
119- public String getVersionString () {
120- return mVersionString ;
96+ public Map <String , Object > values () {
97+ HashMap <String , Object > result = new HashMap <>();
98+
99+ result .put ("hostname" , getHostname ());
100+ result .put ("ip" , getIP ());
101+ result .put ("cpuProcessorCount" , getProcessorCount ());
102+ result .put ("applicationVersion" , getVersionString ());
103+ result .put ("jarFile" , getJarFilename ());
104+ result .put ("javaVersion" , getJavaVersion ());
105+ result .put ("javaVendor" , getJavaVendor ());
106+ result .put ("osVersion" , getOsVersion ());
107+ result .put ("osName" , getOsName ());
108+
109+ return result ;
121110 }
122111
123112 /**
@@ -138,13 +127,92 @@ public String getIP() {
138127 * Processor count of server
139128 */
140129 public int getProcessorCount () {
141- return mProcessorCount ;
130+ return Runtime .getRuntime ().availableProcessors ();
131+ }
132+
133+ /**
134+ * String of app version
135+ */
136+ public String getVersionString () {
137+ return mVersionString ;
142138 }
143139
144140 /**
145141 * Filename of Jar
146142 */
147- public String getJarFilename (){
143+ public String getJarFilename () {
148144 return mJarFilename ;
149145 }
146+
147+ /**
148+ * Get java version
149+ */
150+ public String getJavaVersion () {
151+ return System .getProperty ("java.version" );
152+ }
153+
154+ /**
155+ * Get java vendor
156+ */
157+ public String getJavaVendor () {
158+ return System .getProperty ("java.vendor" );
159+ }
160+
161+ /**
162+ * Get OS name
163+ */
164+ public String getOsName () {
165+ return System .getProperty ("os.name" );
166+ }
167+
168+ /**
169+ * Get OS version
170+ */
171+ public String getOsVersion () {
172+ return System .getProperty ("os.version" );
173+ }
174+
175+ /**
176+ * Get app version from manifest info
177+ */
178+ private String parseApplicationVersion () {
179+ Enumeration resourceEnum ;
180+ try {
181+ resourceEnum = Thread .currentThread ().getContextClassLoader ().getResources (JarFile .MANIFEST_NAME );
182+ while (resourceEnum .hasMoreElements ()) {
183+ try {
184+ URL url = (URL ) resourceEnum .nextElement ();
185+ InputStream is = url .openStream ();
186+ if (is != null ) {
187+ Manifest manifest = new Manifest (is );
188+ Attributes attr = manifest .getMainAttributes ();
189+ String version = attr .getValue ("Implementation-Version" );
190+ if (version != null ) {
191+ return version ;
192+ }
193+ }
194+ } catch (Exception e ) {
195+ // Nothing
196+ }
197+ }
198+ } catch (IOException e1 ) {
199+ // Nothing
200+ }
201+ return null ;
202+ }
203+
204+ /**
205+ * Get jar file name from system property
206+ */
207+ private String parseJarFilename () {
208+ String javaClassPath = System .getProperty ("java.class.path" );
209+ String jarFilename = "" ;
210+ if (StringUtils .isBlank (javaClassPath ) == false ) {
211+ String [] temp = StringUtils .split (javaClassPath , "/" );
212+ if (temp .length > 0 ) {
213+ jarFilename = temp [temp .length - 1 ];
214+ }
215+ }
216+ return jarFilename ;
217+ }
150218}
0 commit comments