1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package ch.elca.el4j.util.socketstatistics;
18
19 import java.lang.management.ManagementFactory;
20 import java.net.SocketImpl;
21 import java.net.SocketImplFactory;
22
23 import javax.management.InstanceAlreadyExistsException;
24 import javax.management.MBeanRegistrationException;
25 import javax.management.MBeanServer;
26 import javax.management.MalformedObjectNameException;
27 import javax.management.NotCompliantMBeanException;
28 import javax.management.ObjectName;
29
30 import ch.elca.el4j.util.socketstatistics.genericlogger.GenericLogFactory;
31 import ch.elca.el4j.util.socketstatistics.genericlogger.GenericLogger;
32
33
34
35
36
37
38
39
40 public class LoggerSocketFactory implements SocketImplFactory {
41
42
43
44
45 private static SocketStatistics s_ss = null;
46
47
48
49
50 private final GenericLogger m_logger = GenericLogFactory.getLogger(SocketStatistics.class);
51
52
53
54
55
56 @Override
57 public SocketImpl createSocketImpl() {
58 if (s_ss == null) {
59 s_ss = new SocketStatistics();
60 MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
61 try {
62 ObjectName name = new ObjectName("ch.elca.el4j.util.socketStatistics:type=SocketStatistics");
63 if (!mbs.isRegistered(name)) {
64 mbs.registerMBean(s_ss, name);
65 m_logger.log("info", "MXBean SocketStatisticsMXBean successfully registered on MBeanServer");
66 }
67 } catch (MalformedObjectNameException e) {
68 m_logger.log("info",
69 "Failed to register MXBean SocketStatisticsMXBean on MBeanServer (MalformedObjectNameException)");
70 } catch (NullPointerException e) {
71 m_logger.log("info",
72 "Failed to register MXBean SocketStatisticsMXBean on MBeanServer (NullPointerException)");
73 } catch (InstanceAlreadyExistsException e) {
74 m_logger.log("info",
75 "Failed to register MXBean SocketStatisticsMXBean on MBeanServer (MBean already registered)");
76 } catch (MBeanRegistrationException e) {
77 m_logger.log("info",
78 "Failed to register MXBean SocketStatisticsMXBean on MBeanServer (MBeanRegistrationException)");
79 } catch (NotCompliantMBeanException e) {
80 m_logger.log("info",
81 "Failed to register MXBean SocketStatisticsMXBean on MBeanServer (NotCompliantMBeanException)");
82 }
83
84 }
85 return new SocketImplLogger();
86 }
87
88 }