001 package com.bea.medrec.actions;
002
003 import com.bea.medrec.controller.AdminSession;
004 import com.bea.medrec.controller.AdminSessionHome;
005 import com.bea.medrec.utils.MedRecLog4jFactory;
006 import javax.naming.InitialContext;
007 import javax.management.MBeanServerConnection;
008 import javax.management.ObjectName;
009 import javax.servlet.http.HttpServletRequest;
010 import org.apache.log4j.Logger;
011 import weblogic.management.jmx.MBeanServerInvocationHandler;
012 import weblogic.management.mbeanservers.runtime.RuntimeServiceMBean;
013 import weblogic.management.runtime.WLDFAccessRuntimeMBean;
014 import weblogic.management.runtime.ServerRuntimeMBean;
015 import com.bea.medrec.utils.ClientException;
016 import com.bea.medrec.utils.WLSMBeanServerConnectionFactory;
017 import java.io.IOException;
018 import java.util.Locale;
019
020 /**
021 * <p>Base lookup dispatch action encapsulating
022 * common admin webapp functionality.</p>
023 *
024 * @author Copyright (c) 2006 by BEA Systems. All Rights Reserved.
025 */
026 public abstract class AdminBaseLookupDispatchAction
027 extends BaseLookupDispatchAction implements AdminConstants {
028 private static Logger logger =
029 MedRecLog4jFactory.getLogger(AdminBaseLookupDispatchAction.class.getName());
030
031 protected InitialContext ctx = null;
032 private AdminSession adminSession;
033 private MBeanServerConnection mbeanServerConnection = null;
034 private WLDFAccessRuntimeMBean dar = null;
035
036 /**
037 * <p>Retrives AdminSession home.
038 * If instance does not exist, retrieve a new instance.<p>
039 *
040 * @return AdminSession
041 */
042 protected AdminSession getAdminSession() throws Exception {
043 if (ctx == null) ctx = new InitialContext();
044 if (adminSession == null) {
045 logger.debug("Getting new admin session.");
046 this.adminSession = getAdminSessionHome();
047 }
048 return this.adminSession;
049 }
050
051 protected WLDFAccessRuntimeMBean getDiagntosicMBean(
052 HttpServletRequest request)
053 throws Exception {
054 logger.info("Getting WLDF runtime MBean.");
055 RuntimeServiceMBean rtService = null;
056 ObjectName rtSvcObjName = null;
057
058 if (dar == null) {
059 rtSvcObjName = new ObjectName(RuntimeServiceMBean.OBJECT_NAME);
060
061 try {
062 rtService = (RuntimeServiceMBean)
063 MBeanServerInvocationHandler.newProxyInstance(
064 getMBeanServerConnection(request), rtSvcObjName);
065 logger.debug("Got RuntimeServiceMBean.");
066 } catch (Throwable t) {
067 logger.error(t.getMessage());
068 throw new ClientException(t);
069 }
070
071 ServerRuntimeMBean srt = rtService.getServerRuntime();
072 dar = srt.getWLDFRuntime().getWLDFAccessRuntime();
073 logger.debug("Obtained WLDFAccessRuntimeMBean.");
074 }
075 return dar;
076 }
077
078 protected MBeanServerConnection getDomainMBeanServerConnection(
079 HttpServletRequest request)
080 throws ClientException {
081 WLSMBeanServerConnectionFactory mbsFactory = null;
082 // get server and port of admin server
083 // values only located in default message properties files
084 String server = getMessage(request, Locale.ENGLISH, "wls.admin.server.host");
085 String port = getMessage(request, Locale.ENGLISH, "wls.admin.server.post");
086 String wlsUser = getMessage(request, Locale.ENGLISH, "wls.admin.server.user");
087 String wlsPassword = getMessage(request, Locale.ENGLISH,
088 "wls.admin.server.password");
089
090 if (mbeanServerConnection == null) {
091 logger.debug("Getting MBeanServerConnection: ["+wlsUser+"], ["+wlsPassword+
092 "], ["+server+"], ["+port+"]");
093 mbsFactory = WLSMBeanServerConnectionFactory.getInstance(wlsUser,
094 wlsPassword, server, Integer.parseInt(port));
095 try {
096 mbeanServerConnection = mbsFactory.getDomainRuntimeMBeanServer();
097 } catch (IOException e) {
098 logger.error(e.getMessage());
099 throw new ClientException(e);
100 }
101 }
102 return mbeanServerConnection;
103 }
104
105 protected MBeanServerConnection getEditMBeanServerConnection(
106 HttpServletRequest request)
107 throws ClientException {
108 WLSMBeanServerConnectionFactory mbsFactory = null;
109 // get server and port of admin server
110 // values only located in default message properties files
111 String server = getMessage(request, Locale.ENGLISH, "wls.admin.server.host");
112 String port = getMessage(request, Locale.ENGLISH, "wls.admin.server.post");
113 String wlsUser = getMessage(request, Locale.ENGLISH, "wls.admin.server.user");
114 String wlsPassword = getMessage(request, Locale.ENGLISH,
115 "wls.admin.server.password");
116
117 if (mbeanServerConnection == null) {
118 logger.debug("Getting MBeanServerConnection: ["+wlsUser+"], ["+wlsPassword+
119 "], ["+server+"], ["+port+"]");
120 mbsFactory = WLSMBeanServerConnectionFactory.getInstance(wlsUser,
121 wlsPassword, server, Integer.parseInt(port));
122 try {
123 mbeanServerConnection = mbsFactory.getEditMBeanServer();
124 } catch (IOException e) {
125 logger.error(e.getMessage());
126 throw new ClientException(e);
127 }
128 }
129 return mbeanServerConnection;
130 }
131
132
133 protected MBeanServerConnection getMBeanServerConnection(
134 HttpServletRequest request)
135 throws ClientException {
136 WLSMBeanServerConnectionFactory mbsFactory = null;
137 // get server and port of admin server
138 // values only located in default message properties files
139 String server = getMessage(request, Locale.ENGLISH, "wls.admin.server.host");
140 String port = getMessage(request, Locale.ENGLISH, "wls.admin.server.post");
141 String wlsUser = getMessage(request, Locale.ENGLISH, "wls.admin.server.user");
142 String wlsPassword = getMessage(request, Locale.ENGLISH,
143 "wls.admin.server.password");
144
145 if (mbeanServerConnection == null) {
146 logger.debug("Getting MBeanServerConnection: ["+wlsUser+"], ["+wlsPassword+
147 "], ["+server+"], ["+port+"]");
148 mbsFactory = WLSMBeanServerConnectionFactory.getInstance(wlsUser,
149 wlsPassword, server, Integer.parseInt(port));
150 try {
151 mbeanServerConnection = mbsFactory.getRuntimeMBeanServer();
152 } catch (IOException e) {
153 logger.error(e.getMessage());
154 throw new ClientException(e);
155 }
156 }
157 return mbeanServerConnection;
158 }
159 // P R I V A T E M E T H O D S
160 /**
161 * <p>Get AdminSession</p>
162 *
163 * @return AdminSession
164 */
165 private AdminSession getAdminSessionHome() throws Exception {
166 AdminSessionHome home = (AdminSessionHome) ctx.lookup(
167 "java:/comp/env/AdminSessionEJB");
168 return (AdminSession) home.create();
169 }
170 }
|