ApplyWebAppCatalinaAction.java

00001 
00026 package org.objectweb.jonas.webapp.jonasadmin.service.container;
00027 
00028 import java.io.IOException;
00029 
00030 import javax.management.ObjectName;
00031 import javax.servlet.ServletException;
00032 import javax.servlet.http.HttpServletRequest;
00033 import javax.servlet.http.HttpServletResponse;
00034 
00035 import org.apache.struts.action.ActionError;
00036 import org.apache.struts.action.ActionForm;
00037 import org.apache.struts.action.ActionForward;
00038 import org.apache.struts.action.ActionMapping;
00039 import org.objectweb.jonas.jmx.CatalinaObjectName;
00040 import org.objectweb.jonas.jmx.JonasManagementRepr;
00041 import org.objectweb.jonas.jmx.JonasObjectName;
00042 import org.objectweb.jonas.webapp.jonasadmin.JonasAdminException;
00043 import org.objectweb.jonas.webapp.jonasadmin.WhereAreYou;
00044 
00048 public class ApplyWebAppCatalinaAction extends BaseWebAppAction {
00049 
00053     private String sa_CreateJOnASStandardContext[] = {
00054         "java.lang.String", "java.lang.String", "java.lang.String"
00055     };
00056 
00057     private static String sDefaultForward = "ActionEditWebAppCatalina";
00058 
00059 // --------------------------------------------------------- Protected Variables
00060 
00061 // --------------------------------------------------------- Public Methods
00062 
00063     public ActionForward executeAction(ActionMapping p_Mapping, ActionForm p_Form
00064         , HttpServletRequest p_Request, HttpServletResponse p_Response)
00065         throws IOException, ServletException {
00066 
00067         // Default forward
00068         ActionForward oForward = null;
00069 
00070         // Identify the requested action
00071         WebAppCatalinaForm oForm = (WebAppCatalinaForm) p_Form;
00072 
00073         // Populate
00074         try {
00075             // Perform a "Create WebApp" transaction (if requested)
00076             if ("create".equals(oForm.getAction()) == true) {
00077                 oForward = createWebApplication(oForm, p_Mapping, p_Request);
00078             }
00079             // Save in memory the new datas
00080             else if ("edit".equals(oForm.getAction()) == true) {
00081                 oForward = populateMbean(oForm, p_Mapping.findForward(sDefaultForward), p_Mapping
00082                     , p_Request);
00083             }
00084             // Reload the web app
00085             else if ("reload".equals(oForm.getAction()) == true) {
00086                 oForward = reloadWebApplication(oForm, p_Mapping);
00087             }
00088             // Stop the web app
00089             else if ("stop".equals(oForm.getAction()) == true) {
00090                 oForward = stopWebApplication(oForm, p_Mapping);
00091             }
00092             // Start the web app
00093             else if ("start".equals(oForm.getAction()) == true) {
00094                 oForward = startWebApplication(oForm, p_Mapping);
00095             }
00096         }
00097         catch (JonasAdminException e) {
00098             // Build error
00099             m_Errors.add("webapp", new ActionError(e.getId()));
00100             saveErrors(p_Request, m_Errors);
00101             // Return to the current page
00102             oForward = new ActionForward(p_Mapping.getInput());
00103         }
00104         catch (Throwable t) {
00105             addGlobalError(t);
00106             saveErrors(p_Request, m_Errors);
00107             oForward = p_Mapping.findForward("Global Error");
00108         }
00109 
00110         // Next Forward
00111         return oForward;
00112     }
00113 
00122     protected ActionForward createWebApplication(WebAppCatalinaForm p_Form, ActionMapping p_Mapping
00123         , HttpServletRequest p_Request)
00124         throws Exception {
00125         Object values[] = null;
00126 
00127         // Ensure that the requested context is unique
00128         ObjectName onContext = findWebAppMbean(p_Form.getPathContext());
00129         if (onContext != null) {
00130             throw new JonasAdminException("error.webapp.context.exists");
00131         }
00132 
00133         // Look up the JOnAS Web service
00134         ObjectName onWebService = JonasObjectName.webContainerService();
00135         // Create a new JOnASStandardContext object
00136         values = new Object[3];
00137         // parent
00138         values[0] = CatalinaObjectName.catalinaHost(m_WhereAreYou.getCurrentCatalinaServiceName()
00139             , m_WhereAreYou.getCurrentCatalinaDefaultHostName()).toString();
00140         values[1] = p_Form.getPathContext();
00141         values[2] = "";
00142         p_Form.setObjectName((String) JonasManagementRepr.invoke(onWebService
00143             , "createJOnASStandardContext", values, sa_CreateJOnASStandardContext));
00144 
00145         // Populate
00146         ActionForward oForward = populateMbean(p_Form
00147             , p_Mapping.findForward("ActionListWebContainers"), p_Mapping, p_Request);
00148 
00149         // Stop the WebApp (Tomcat start it at creating)
00150         try {
00151             stopWebApplication(p_Form, p_Mapping);
00152         }
00153         catch (Exception e) {
00154             // none
00155         }
00156 
00157         // refresh tree
00158         refreshTree(p_Request);
00159         // Force the node selected in tree
00160         m_WhereAreYou.selectNameNode(getTreeBranchName(DEPTH_SERVER) + WhereAreYou.NODE_SEPARATOR
00161             + "services" + WhereAreYou.NODE_SEPARATOR + "web" + WhereAreYou.NODE_SEPARATOR
00162             + p_Form.getName(), true);
00163 
00164         return oForward;
00165     }
00166 
00177     protected ActionForward populateMbean(WebAppCatalinaForm p_Form, ActionForward p_Forward
00178         , ActionMapping p_Mapping, HttpServletRequest p_Request)
00179         throws Exception {
00180         ActionForward oForward = p_Forward;
00181         // Context
00182         ObjectName on = ObjectName.getInstance(p_Form.getObjectName());
00183         //setBooleanAttribute(on, "available", p_Form.isAvailable());
00184         setBooleanAttribute(on, "cookies", p_Form.isCookies());
00185         setBooleanAttribute(on, "crossContext", p_Form.isCrossContext());
00186         setBooleanAttribute(on, "reloadable", p_Form.isReloadable());
00187         setBooleanAttribute(on, "swallowOutput", p_Form.isSwallowOutput());
00188         setBooleanAttribute(on, "override", p_Form.isOverride());
00189         // Save in configuration file
00190         if (p_Form.isSave() == true) {
00191             //ObjectName onServer = CatalinaObjectName.catalinaServer();
00192             //JonasManagementRepr.invoke(onServer, "store", null, null);
00193             p_Form.setSave(false);
00194             p_Request.setAttribute("forward", p_Forward.getName());
00195             oForward = p_Mapping.findForward("ActionEditServletServer");
00196         }
00197         return oForward;
00198     }
00199 
00207     protected ActionForward reloadWebApplication(WebAppCatalinaForm p_Form, ActionMapping p_Mapping)
00208         throws Exception {
00209         // Reload
00210         try {
00211             String sWebModuleObjectName = p_Form.getObjectName();
00212             ObjectName proxyObjectName = JonasObjectName.webModuleProxy(m_WhereAreYou.getCurrentCatalinaDomainName());
00213             Object[] params = { sWebModuleObjectName };
00214             String[] signs = { "java.lang.String" };
00215             JonasManagementRepr.invoke(proxyObjectName, "reload", params, signs);
00216             /*
00217             ObjectName onContext = new ObjectName(p_Form.getObjectName());
00218             JonasManagementRepr.invoke(onContext, "reload", null, null);
00219             */
00220         }
00221         catch (Throwable t) {
00222             throw new JonasAdminException("error.webapp.reload");
00223         }
00224         // Forward
00225         ActionForward oForward = null;
00226         if (p_Form.getName().equals(m_WhereAreYou.getApplicationContextPath()) == true) {
00227             oForward = p_Mapping.findForward("Main Index");
00228         }
00229         else {
00230             oForward = p_Mapping.findForward(sDefaultForward);
00231         }
00232         return oForward;
00233     }
00234 
00242     protected ActionForward startWebApplication(WebAppCatalinaForm p_Form, ActionMapping p_Mapping)
00243         throws Exception {
00244         try {
00245             String sWebModuleObjectName = p_Form.getObjectName();
00246             ObjectName proxyObjectName = JonasObjectName.webModuleProxy(m_WhereAreYou.getCurrentCatalinaDomainName());
00247             Object[] params = { sWebModuleObjectName };
00248             String[] signs = { "java.lang.String" };
00249             JonasManagementRepr.invoke(proxyObjectName, "start", params, signs);
00250             /*
00251             ObjectName onContext = new ObjectName(p_Form.getObjectName());
00252             JonasManagementRepr.invoke(onContext, "start", null, null);
00253             */
00254         }
00255         catch (Throwable t) {
00256             throw new JonasAdminException("error.webapp.start");
00257         }
00258         return p_Mapping.findForward(sDefaultForward);
00259     }
00260 
00268     protected ActionForward stopWebApplication(WebAppCatalinaForm p_Form, ActionMapping p_Mapping)
00269         throws Exception {
00270         try {
00271             String sWebModuleObjectName = p_Form.getObjectName();
00272             ObjectName proxyObjectName = JonasObjectName.webModuleProxy(m_WhereAreYou.getCurrentCatalinaDomainName());
00273             Object[] params = { sWebModuleObjectName };
00274             String[] signs = { "java.lang.String" };
00275             JonasManagementRepr.invoke(proxyObjectName, "stop", params, signs);
00276             /*
00277             ObjectName onContext = new ObjectName(p_Form.getObjectName());
00278             JonasManagementRepr.invoke(onContext, "stop", null, null);
00279             */
00280         }
00281         catch (Throwable t) {
00282             throw new JonasAdminException("error.webapp.stop");
00283         }
00284         return p_Mapping.findForward(sDefaultForward);
00285     }
00286 }

Generated on Tue Feb 15 15:05:30 2005 for JOnAS by  doxygen 1.3.9.1