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.ibm.websphere.management.AdminClient;
08: import com.ibm.websphere.management.AdminClientFactory;
09: import com.ibm.websphere.management.exception.ConnectorException;
10: import com.sun.portal.monitoring.*;
11: import com.sun.portal.monitoring.security.ssl.SslContext;
12: import com.sun.portal.monitoring.utilities.PropertyHelper;
13: import com.sun.portal.monitoring.utilities.UtilityException;
14: import com.sun.portal.log.common.PortalLogger;
15:
16: import java.io.File;
17: import java.util.List;
18: import java.util.Properties;
19: import java.util.logging.Logger;
20: import java.util.logging.Level;
21: import java.util.logging.LogRecord;
22:
23: public class IbmClientFactory implements ClientFactory {
24: private static final Logger logger = PortalLogger
25: .getLogger(IbmClientFactory.class);
26:
27: private static LogRecord getLogRecord(Level level, String message,
28: Object[] parameters, Throwable t) {
29: LogRecord result = new LogRecord(level, message);
30: result.setLoggerName(logger.getName());
31: result.setParameters(parameters);
32: result.setThrown(t);
33: return result;
34: }
35:
36: public static final String SOAP = "soap";
37: public static final String RMI = "rmi";
38:
39: public Client getClient(MonitoringContext monitoringContext,
40: List immortalMBeanObjectNames) throws MonitoringException {
41: ConnectorContext connectorContext = monitoringContext
42: .getConnectorContext();
43: SslContext sslContext = monitoringContext.getSslContext();
44:
45: Properties env;
46: try {
47: env = PropertyHelper.loadProperties(connectorContext
48: .getAdditionalPropertiesDirectory()
49: + File.separator
50: + connectorContext
51: .getAdditionalPropertiesFileName());
52: } catch (UtilityException e) {
53: if (logger.isLoggable(Level.CONFIG)) {
54: logger.log(getLogRecord(Level.CONFIG, "PSMN_CSPM0001",
55: new Object[] { e.getLocalizedMessage() }, e));
56: }
57: throw new MonitoringException(e);
58: }
59:
60: env.setProperty(AdminClient.CONNECTOR_HOST, sslContext
61: .getHostName());
62: env.setProperty(AdminClient.CONNECTOR_PORT, sslContext
63: .getPort());
64:
65: if (connectorContext.getProtocol().equals(SOAP)) {
66: env.setProperty(AdminClient.CONNECTOR_TYPE,
67: AdminClient.CONNECTOR_TYPE_SOAP);
68: } else if (connectorContext.getProtocol().equals(RMI)) {
69: env.setProperty(AdminClient.CONNECTOR_TYPE,
70: AdminClient.CONNECTOR_TYPE_RMI);
71: } else {
72: env.setProperty(AdminClient.CONNECTOR_TYPE,
73: AdminClient.CONNECTOR_TYPE_SOAP);
74: }
75:
76: AdminClient adminClient;
77: try {
78: adminClient = AdminClientFactory.createAdminClient(env);
79: } catch (ConnectorException e) {
80: if (logger.isLoggable(Level.SEVERE)) {
81: logger.log(getLogRecord(Level.SEVERE, "PSMN_CSPM0001",
82: new Object[] { e.getLocalizedMessage() }, e));
83: }
84: throw new MonitoringException(e.getLocalizedMessage());
85: }
86:
87: return new IbmClientImpl(monitoringContext.getNamingDomain(),
88: immortalMBeanObjectNames, adminClient);
89: }
90: }
|