01: /*
02: * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
03: * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to license terms.
04: */
05: package com.sun.portal.monitoring.client;
06:
07: import com.sun.portal.monitoring.*;
08: import com.sun.portal.log.common.PortalLogger;
09:
10: import javax.management.remote.JMXConnector;
11: import java.io.IOException;
12: import java.util.List;
13: import java.util.logging.Level;
14: import java.util.logging.LogRecord;
15: import java.util.logging.Logger;
16:
17: public class SunClientFactory implements ClientFactory {
18: private static final Logger logger = PortalLogger
19: .getLogger(SunClientFactory.class);
20:
21: private static LogRecord getLogRecord(Level level, String message,
22: Object[] parameters, Throwable t) {
23: LogRecord result = new LogRecord(level, message);
24: result.setLoggerName(logger.getName());
25: result.setParameters(parameters);
26: result.setThrown(t);
27: return result;
28: }
29:
30: public Client getClient(MonitoringContext monitoringContext,
31: List immortalMBeanObjectNames) throws MonitoringException {
32: JMXConnector jmxConnector = ConnectorFactory.getJMXConnector(
33: monitoringContext.getConnectorContext(),
34: monitoringContext.getSaslContext(), monitoringContext
35: .getSslContext());
36: try {
37: jmxConnector.connect();
38: } catch (IOException e) {
39: if (logger.isLoggable(Level.SEVERE)) {
40: logger.log(getLogRecord(Level.SEVERE, "PSMN_CSPM0001",
41: new Object[] { e.getLocalizedMessage() }, e));
42: }
43: throw new MonitoringException(e);
44: }
45:
46: Client result;
47: try {
48: result = new SunClientImpl(monitoringContext
49: .getNamingDomain(), immortalMBeanObjectNames,
50: jmxConnector.getMBeanServerConnection(),
51: jmxConnector);
52: } catch (IOException e) {
53: if (logger.isLoggable(Level.SEVERE)) {
54: logger.log(getLogRecord(Level.SEVERE, "PSMN_CSPM0001",
55: new Object[] { e.getLocalizedMessage() }, e));
56: }
57: throw new MonitoringException(e);
58: }
59:
60: return result;
61: }
62: }
|