AdminBaseLookupDispatchAction.java
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 == nullctx = 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 = (AdminSessionHomectx.lookup(
167         "java:/comp/env/AdminSessionEJB");
168     return (AdminSessionhome.create();
169   }
170 }