00001
00026 package org.objectweb.jonas.webapp.jonasadmin.service.container;
00027
00028 import java.net.URL;
00029 import java.util.Iterator;
00030
00031 import javax.management.ObjectName;
00032 import javax.servlet.http.HttpServletRequest;
00033
00034 import org.apache.struts.action.ActionMapping;
00035 import org.objectweb.jonas.jmx.J2eeObjectName;
00036 import org.objectweb.jonas.jmx.JonasManagementRepr;
00037 import org.objectweb.jonas.jmx.JonasObjectName;
00038 import org.objectweb.jonas.webapp.jonasadmin.JettyObjectName;
00039 import org.objectweb.jonas.webapp.jonasadmin.JonasAdminJmx;
00040 import org.objectweb.jonas.webapp.jonasadmin.deploy.BaseDeployAction;
00041
00046 abstract public class BaseWebAppAction extends BaseDeployAction {
00047
00048
00049
00050 protected WebAppForm mWebAppForm;
00051 protected WarForm mWarForm;
00052
00053
00054
00055
00056
00063 protected boolean initialize(ActionMapping p_Mapping, HttpServletRequest p_Request) {
00064
00065 boolean bPopulate = false;
00066
00067
00068 mWebAppForm = null;
00069 mWarForm = null;
00070
00071
00072 String sParamAction = p_Request.getParameter("action");
00073
00074 String sParamWebAppObjectName = p_Request.getParameter("on");
00075
00076 String sParamPathWar = p_Request.getParameter("war");
00077
00078
00079 if ((sParamAction != null) && ("create".equals(sParamAction) == true)) {
00080
00081 mWebAppForm = createWebAppForm(p_Mapping, p_Request);
00082 mWebAppForm.setAction("create");
00083
00084 m_Session.removeAttribute("warForm");
00085 }
00086
00087 else if (sParamWebAppObjectName != null) {
00088 mWebAppForm = createWebAppForm(p_Mapping, p_Request);
00089 mWebAppForm.setObjectName(sParamWebAppObjectName);
00090 bPopulate = true;
00091
00092 m_Session.removeAttribute("warForm");
00093 }
00094 else if (sParamPathWar != null) {
00095
00096 mWarForm = createWarForm(p_Mapping, p_Request);
00097 mWarForm.setPath(sParamPathWar);
00098 mWarForm.setFilename(JonasAdminJmx.extractFilename(sParamPathWar));
00099 bPopulate = true;
00100 }
00101 else {
00102
00103 mWebAppForm = (WebAppForm) m_Session.getAttribute("webAppForm");
00104 if (mWebAppForm != null) {
00105 mWebAppForm.setAction("edit");
00106 }
00107 mWarForm = (WarForm) m_Session.getAttribute("warForm");
00108
00109 if (("reload".equals(sParamAction) == true) || ("start".equals(sParamAction) == true)
00110 || ("stop".equals(sParamAction) == true)) {
00111 bPopulate = true;
00112 }
00113 }
00114 return bPopulate;
00115 }
00116
00123 protected WebAppForm createWebAppForm(ActionMapping p_Mapping, HttpServletRequest p_Request) {
00124 WebAppForm oForm = null;
00125 if (m_WhereAreYou.isCatalinaServer() == true) {
00126 oForm = new WebAppCatalinaForm();
00127 oForm.reset(p_Mapping, p_Request);
00128 m_Session.setAttribute("webAppForm", oForm);
00129 m_Session.setAttribute("webAppCatalinaForm", oForm);
00130 }
00131 else if (m_WhereAreYou.isJettyServer() == true) {
00132 oForm = new WebAppJettyForm();
00133 oForm.reset(p_Mapping, p_Request);
00134 m_Session.setAttribute("webAppForm", oForm);
00135 m_Session.setAttribute("webAppJettyForm", oForm);
00136 }
00137 return oForm;
00138 }
00139
00146 protected WarForm createWarForm(ActionMapping p_Mapping, HttpServletRequest p_Request) {
00147 WarForm oForm = new WarForm();
00148 oForm.reset(p_Mapping, p_Request);
00149 m_Session.setAttribute("warForm", oForm);
00150 return oForm;
00151 }
00152
00159 protected void populateWebApp(String p_ObjectName, WebAppForm p_Form)
00160 throws Exception {
00161 if (m_WhereAreYou.isCatalinaServer() == true) {
00162 populateWebAppCatalina(p_ObjectName, (WebAppCatalinaForm) p_Form);
00163 }
00164 else if (m_WhereAreYou.isJettyServer() == true) {
00165 populateWebAppJetty(p_ObjectName, (WebAppJettyForm) p_Form);
00166 }
00167 }
00168
00176 protected void populateWebAppCatalina(String p_ObjectName, WebAppCatalinaForm p_Form)
00177 throws Exception {
00178
00179 ObjectName on = new ObjectName(p_ObjectName);
00180 p_Form.setObjectName(on.toString());
00181 p_Form.setName(on.getKeyProperty("name"));
00182 p_Form.setJ2eeApplication(on.getKeyProperty("J2EEApplication"));
00183 p_Form.setJ2eeServer(on.getKeyProperty("J2EEServer"));
00184 p_Form.setPathContext(WebAppItem.extractPathContext(p_Form.getName()));
00185 p_Form.setHost(getStringAttribute(on, "hostname"));
00186 p_Form.setCookies(getBooleanAttribute(on, "cookies"));
00187 p_Form.setReloadable(getBooleanAttribute(on, "reloadable"));
00188 p_Form.setSwallowOutput(getBooleanAttribute(on, "swallowOutput"));
00189 p_Form.setCrossContext(getBooleanAttribute(on, "crossContext"));
00190 p_Form.setOverride(getBooleanAttribute(on, "override"));
00191 p_Form.setState(getIntegerAttribute(on, "state"));
00192 }
00193
00200 protected void populateWebAppJetty(String p_ObjectName, WebAppJettyForm p_Form)
00201 throws Exception {
00202
00203 Iterator it = JonasAdminJmx.getListMbean(JettyObjectName.jettyContexts()).iterator();
00204 while (it.hasNext() == true) {
00205 ObjectName on = (ObjectName) it.next();
00206 if ((on.getKeyProperty("WebApplicationContext") != null) &&
00207 (on.getKeyProperty("WebApplicationHandler") == null)
00208 ) {
00209
00210 p_Form.setStarted(getBooleanAttribute(on, "started"));
00211 p_Form.setResourceBase(getStringAttribute(on, "resourceBase"));
00212 p_Form.setDisplayName(getStringAttribute(on, "displayName"));
00213 p_Form.setPathContext(getStringAttribute(on, "contextPath"));
00214 break;
00215 }
00216 }
00217 }
00218
00225 protected ObjectName findJonasMbeanWar(String p_PathContext)
00226 throws Exception {
00227 ObjectName onRet = null;
00228 ObjectName on;
00229 String sPathContext;
00230 StringBuffer sb;
00231
00232 Iterator itOnWars = JonasAdminJmx.getListMbean(JonasObjectName.allWars()).iterator();
00233 while (itOnWars.hasNext()) {
00234 on = (ObjectName) itOnWars.next();
00235 sPathContext = getStringAttribute(on, "ContextRoot");
00236 if (sPathContext.charAt(0) != '/') {
00237 sb = new StringBuffer("/");
00238 sb.append(sPathContext);
00239 sPathContext = sb.toString();
00240 }
00241
00242 if (p_PathContext.equals(sPathContext) == true) {
00243 onRet = on;
00244 break;
00245 }
00246 }
00247 return onRet;
00248 }
00249
00256 protected ObjectName findWebAppMbean(String p_PathContext)
00257 throws Exception {
00258 ObjectName onRet = null;
00259 if (m_WhereAreYou.isCatalinaServer() == true) {
00260 onRet = findJ2eeWebModuleMbean(p_PathContext);
00261 }
00262 else if (m_WhereAreYou.isJettyServer() == true) {
00263
00264 }
00265 return onRet;
00266 }
00267
00274 protected ObjectName findJ2eeWebModuleMbean(String p_PathContext)
00275 throws Exception {
00276 ObjectName onRet = null;
00277 ObjectName on;
00278 String sPathContext;
00279 String sSearchPathContext = p_PathContext;
00280 if (sSearchPathContext.charAt(0) != '/') {
00281 sSearchPathContext = "/" + p_PathContext;
00282 }
00283
00284 Iterator itOns = JonasAdminJmx.getListMbean(J2eeObjectName.getWebModules(m_WhereAreYou.
00285 getCurrentCatalinaDomainName())).iterator();
00286 while (itOns.hasNext()) {
00287 on = (ObjectName) itOns.next();
00288
00289 sPathContext = on.getKeyProperty("name");
00290
00291 if (sSearchPathContext.equals(sPathContext) == true) {
00292 onRet = on;
00293 break;
00294 }
00295 }
00296 return onRet;
00297 }
00298
00305 protected void populateWar(ObjectName p_ObjectName, WarForm p_Form)
00306 throws Exception {
00307 if (p_ObjectName != null) {
00308
00309 String webModulePath = ((URL) JonasManagementRepr.getAttribute(p_ObjectName, "warURL")).toString();
00310 p_Form.setPath(webModulePath);
00311 p_Form.setFilename(JonasAdminJmx.extractFilename(p_Form.getPath()));
00312
00313
00314 p_Form.setHostName(getStringAttribute(p_ObjectName, "hostname"));
00315 p_Form.setInEarCase(getBooleanAttribute(p_ObjectName, "inEarCase"));
00316
00317 p_Form.setContextRoot(getStringAttribute(p_ObjectName, "path"));
00318 p_Form.setJava2DelegationModel(getBooleanAttribute(p_ObjectName, "java2DelegationModel"));
00319 p_Form.setXmlContent(getStringAttribute(p_ObjectName, "deploymentDescriptor"));
00320 p_Form.setJonasXmlContent(getStringAttribute(p_ObjectName, "jonasDeploymentDescriptor"));
00321 p_Form.setServletsName((String[]) JonasManagementRepr.getAttribute(p_ObjectName
00322 , "servlets"));
00323 p_Form.setWarPath((URL) JonasManagementRepr.getAttribute(p_ObjectName, "warURL"));
00324 p_Form.setEarPath((URL) JonasManagementRepr.getAttribute(p_ObjectName, "earURL"));
00325 }
00326 }
00333 protected void populateJettyWar(ObjectName p_ObjectName, WarForm p_Form)
00334 throws Exception {
00335 if (p_ObjectName != null) {
00336 p_Form.setPath(p_ObjectName.getKeyProperty("fname"));
00337 p_Form.setFilename(JonasAdminJmx.extractFilename(p_Form.getPath()));
00338
00339 p_Form.setHostName(getStringAttribute(p_ObjectName, "HostName"));
00340 p_Form.setInEarCase(getBooleanAttribute(p_ObjectName, "InEarCase"));
00341 p_Form.setContextRoot(getStringAttribute(p_ObjectName, "ContextRoot"));
00342 p_Form.setJava2DelegationModel(getBooleanAttribute(p_ObjectName, "Java2DelegationModel"));
00343 p_Form.setXmlContent(getStringAttribute(p_ObjectName, "XmlContent"));
00344 p_Form.setJonasXmlContent(getStringAttribute(p_ObjectName, "JOnASXmlContent"));
00345 p_Form.setServletsName((String[]) JonasManagementRepr.getAttribute(p_ObjectName
00346 , "ServletsName"));
00347 p_Form.setWarPath((URL) JonasManagementRepr.getAttribute(p_ObjectName, "WarURL"));
00348 p_Form.setEarPath((URL) JonasManagementRepr.getAttribute(p_ObjectName, "EarURL"));
00349 }
00350 }
00351
00358 protected void populateWar(String p_Path, WarForm p_Form)
00359 throws Exception {
00360 populateWar(JonasObjectName.war(p_Path), p_Form);
00361 }
00362 }