Mercurial > hg > monetdb-java
comparison src/main/java/org/monetdb/mcl/net/ClientInfo.java @ 904:2d880f90be2a
Try to use reasonable defaults for ClientInfo
author | Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com> |
---|---|
date | Fri, 14 Jun 2024 16:50:27 +0200 (10 months ago) |
parents | 778959b2e0a4 |
children | a52bc2dcdb8c |
comparison
equal
deleted
inserted
replaced
903:778959b2e0a4 | 904:2d880f90be2a |
---|---|
1 package org.monetdb.mcl.net; | 1 package org.monetdb.mcl.net; |
2 | 2 |
3 import org.monetdb.jdbc.MonetDriver; | 3 import org.monetdb.jdbc.MonetDriver; |
4 | 4 |
5 import java.io.File; | |
6 import java.lang.management.ManagementFactory; | |
7 import java.lang.management.RuntimeMXBean; | |
8 import java.net.InetAddress; | |
9 import java.net.UnknownHostException; | |
5 import java.sql.ClientInfoStatus; | 10 import java.sql.ClientInfoStatus; |
6 import java.sql.SQLClientInfoException; | 11 import java.sql.SQLClientInfoException; |
7 import java.util.Collections; | 12 import java.util.Collections; |
8 import java.util.Map; | 13 import java.util.Map; |
9 import java.util.Properties; | 14 import java.util.Properties; |
11 public class ClientInfo { | 16 public class ClientInfo { |
12 private static final String defaultHostname = findHostname(); | 17 private static final String defaultHostname = findHostname(); |
13 | 18 |
14 private static final String defaultClientLibrary = findClientLibrary(); | 19 private static final String defaultClientLibrary = findClientLibrary(); |
15 | 20 |
16 private static final int defaultPid = findPid(); | 21 private static final String defaultApplicationName = findApplicationName(); |
22 | |
23 private static final String defaultPid = findPid(); | |
17 | 24 |
18 private final Properties props; | 25 private final Properties props; |
19 | 26 |
20 public ClientInfo() { | 27 public ClientInfo() { |
21 props = new Properties(); | 28 props = new Properties(); |
22 props.setProperty("ClientHostname", defaultHostname); | 29 props.setProperty("ClientHostname", defaultHostname); |
23 props.setProperty("ClientLibrary", defaultClientLibrary); | 30 props.setProperty("ClientLibrary", defaultClientLibrary); |
24 props.setProperty("ClientPid", "" + defaultPid); | 31 props.setProperty("ClientPid", defaultPid); |
25 props.setProperty("ApplicationName", ""); | 32 props.setProperty("ApplicationName", defaultApplicationName); |
26 props.setProperty("ClientRemark", ""); | 33 props.setProperty("ClientRemark", ""); |
27 } | 34 } |
28 | 35 |
29 private static String findHostname() { | 36 private static String findHostname() { |
30 return "my host"; | 37 try { |
38 return InetAddress.getLocalHost().getHostName(); | |
39 } catch (UnknownHostException e) { | |
40 return ""; | |
41 } | |
31 } | 42 } |
32 | 43 |
33 private static int findPid() { | 44 private static String findApplicationName() { |
34 return 42; | 45 String appName = ""; |
46 try { | |
47 String prop = System.getProperty("sun.java.command"); | |
48 if (prop != null) { | |
49 // we want only the command, and not the arguments | |
50 prop = prop.split("\\s", 2)[0]; | |
51 // keep only the basename5 | |
52 int idx = prop.lastIndexOf(File.separatorChar); | |
53 if (idx >= 0) | |
54 prop = prop.substring(idx + 1); | |
55 appName = prop; | |
56 } | |
57 } catch (SecurityException e) { | |
58 // ignore | |
59 } | |
60 | |
61 return appName; | |
62 } | |
63 | |
64 private static String findPid() { | |
65 try { | |
66 RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean(); | |
67 String pidAtHostname = mxbean.getName(); | |
68 return pidAtHostname.split("@", 2)[0]; | |
69 } catch (RuntimeException e) { | |
70 return ""; | |
71 } | |
35 } | 72 } |
36 | 73 |
37 private static String findClientLibrary() { | 74 private static String findClientLibrary() { |
38 return "monetdb-java " + MonetDriver.getDriverVersion(); | 75 return "monetdb-java " + MonetDriver.getDriverVersion(); |
39 } | 76 } |