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 }