00001
00026 package org.objectweb.jonas.webapp.jonasadmin.service.ejb;
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.ActionForm;
00036 import org.apache.struts.action.ActionForward;
00037 import org.apache.struts.action.ActionMapping;
00038 import org.objectweb.jonas.jmx.JonasManagementRepr;
00039 import org.objectweb.jonas.webapp.jonasadmin.JonasBaseAction;
00040
00045 public class ExecuteEjbAction extends JonasBaseAction {
00046
00047
00048
00049 protected String mAction = null;
00050 protected String mForward = null;
00051
00052
00053
00065 public ActionForward executeAction(ActionMapping pMapping, ActionForm pForm
00066 , HttpServletRequest pRequest, HttpServletResponse pResponse)
00067 throws IOException, ServletException {
00068
00069
00070 mAction = pRequest.getParameter("action");
00071
00072 EjbForm oForm = (EjbForm) m_Session.getAttribute("ejbForm");
00073
00074
00075
00076 try {
00077
00078 executeEjb(oForm);
00079 } catch (Throwable t) {
00080 addGlobalError(t);
00081 saveErrors(pRequest, m_Errors);
00082 return (pMapping.findForward("Global Error"));
00083 }
00084
00085
00086 pRequest.setAttribute("select", oForm.getObjectName());
00087 return (pMapping.findForward(mForward));
00088 }
00089
00090
00091
00098 protected void executeEjb(EjbForm pForm)
00099 throws Exception {
00100
00101 String sObjectName = pForm.getObjectName();
00102 ObjectName on = new ObjectName(sObjectName);
00103 String mType = pForm.getType();
00104 if (mType.equals("EntityBean")) {
00105
00106 mForward = "ActionEditEjbEntity";
00107 EjbEntityForm eForm = (EjbEntityForm) pForm;
00108 String mPersistency = eForm.getPersistency();
00109 if (mPersistency.startsWith("Cont")) {
00110 if ("synchronize".equals(mAction)) {
00111 JonasManagementRepr.invoke(on, "synchronize", null, null);
00112 } else if ("reduceCache".equals(mAction)) {
00113 JonasManagementRepr.invoke(on, "reduceCache", null, null);
00114 }
00115 }
00116 } else if (mType.equals("StatelessSessionBean")) {
00117 mForward = "ActionEditEjbSbl";
00118 if ("reducePool".equals(mAction)) {
00119 JonasManagementRepr.invoke(on, "reducePoolToMinSize", null, null);
00120 }
00121 }
00122 }
00123
00124 }