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
00060
00061
00062
00063 public ActionForward executeAction(ActionMapping p_Mapping, ActionForm p_Form
00064 , HttpServletRequest p_Request, HttpServletResponse p_Response)
00065 throws IOException, ServletException {
00066
00067
00068 ActionForward oForward = null;
00069
00070
00071 WebAppCatalinaForm oForm = (WebAppCatalinaForm) p_Form;
00072
00073
00074 try {
00075
00076 if ("create".equals(oForm.getAction()) == true) {
00077 oForward = createWebApplication(oForm, p_Mapping, p_Request);
00078 }
00079
00080 else if ("edit".equals(oForm.getAction()) == true) {
00081 oForward = populateMbean(oForm, p_Mapping.findForward(sDefaultForward), p_Mapping
00082 , p_Request);
00083 }
00084
00085 else if ("reload".equals(oForm.getAction()) == true) {
00086 oForward = reloadWebApplication(oForm, p_Mapping);
00087 }
00088
00089 else if ("stop".equals(oForm.getAction()) == true) {
00090 oForward = stopWebApplication(oForm, p_Mapping);
00091 }
00092
00093 else if ("start".equals(oForm.getAction()) == true) {
00094 oForward = startWebApplication(oForm, p_Mapping);
00095 }
00096 }
00097 catch (JonasAdminException e) {
00098
00099 m_Errors.add("webapp", new ActionError(e.getId()));
00100 saveErrors(p_Request, m_Errors);
00101
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
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
00128 ObjectName onContext = findWebAppMbean(p_Form.getPathContext());
00129 if (onContext != null) {
00130 throw new JonasAdminException("error.webapp.context.exists");
00131 }
00132
00133
00134 ObjectName onWebService = JonasObjectName.webContainerService();
00135
00136 values = new Object[3];
00137
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
00146 ActionForward oForward = populateMbean(p_Form
00147 , p_Mapping.findForward("ActionListWebContainers"), p_Mapping, p_Request);
00148
00149
00150 try {
00151 stopWebApplication(p_Form, p_Mapping);
00152 }
00153 catch (Exception e) {
00154
00155 }
00156
00157
00158 refreshTree(p_Request);
00159
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
00182 ObjectName on = ObjectName.getInstance(p_Form.getObjectName());
00183
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
00190 if (p_Form.isSave() == true) {
00191
00192
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
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
00218
00219
00220 }
00221 catch (Throwable t) {
00222 throw new JonasAdminException("error.webapp.reload");
00223 }
00224
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
00252
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
00278
00279
00280 }
00281 catch (Throwable t) {
00282 throw new JonasAdminException("error.webapp.stop");
00283 }
00284 return p_Mapping.findForward(sDefaultForward);
00285 }
00286 }