ApplyConnectorAction.java

00001 
00026 package org.objectweb.jonas.webapp.jonasadmin.catalina;
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.JonasManagementRepr;
00040 import org.objectweb.jonas.jmx.JonasObjectName;
00041 import org.objectweb.jonas.jmx.CatalinaObjectName;
00042 import org.objectweb.jonas.webapp.jonasadmin.JonasAdminJmx;
00043 import org.objectweb.jonas.webapp.jonasadmin.WhereAreYou;
00044 
00051 public class ApplyConnectorAction extends CatalinaBaseAction {
00052 
00056     private String[] saCreateStandardConnectorTypes = {
00057         "java.lang.String", "java.lang.String", "int" // port
00058     };
00059 
00060 // --------------------------------------------------------- Public Methods
00061 
00062     public ActionForward executeAction(ActionMapping p_Mapping, ActionForm p_Form
00063         , HttpServletRequest p_Request, HttpServletResponse p_Response)
00064         throws IOException, ServletException {
00065         // Next forward
00066         String sForward = "Catalina Connector";
00067         // Identify the requested action
00068         ConnectorForm oForm = (ConnectorForm) p_Form;
00069         String sAction = oForm.getAction();
00070         String sObjectName = oForm.getObjectName();
00071         String sConnectorType = oForm.getConnectorType();
00072 
00073         // Populate
00074         try {
00075             // Perform a "Create Connector operation"
00076             if ("create".equals(sAction)) {
00077                 String address = oForm.getAddress(); // IP address
00078                 
00079                 // Ensure that the requested connector name is unique
00080                 ObjectName onConnector = CatalinaObjectName.catalinaConnector(
00081                                 m_WhereAreYou.getCurrentCatalinaDomainName(), 
00082                                                 oForm.getPortText());
00083                 if (JonasAdminJmx.hasMBeanName(onConnector) == true) {
00084                     m_Errors.add("connector", new ActionError("error.catalina.connector.exists"));
00085                     saveErrors(p_Request, m_Errors);
00086                     return (new ActionForward(p_Mapping.getInput()));
00087                 }
00088                 
00089                 // Use CatalinaConnectorFactory to create connector
00090                 ObjectName onConnectorFactory = JonasObjectName.catalinaConnectorFactory(
00091                                 m_WhereAreYou.getCurrentDomainName());
00092                 Object values[] = new Object[3];
00093                 values[0] = sConnectorType;
00094                 values[1] = address;
00095                 values[2] = new Integer(oForm.getPortText());
00096                 String operation = "createConnector";
00097                 sObjectName = (String) JonasManagementRepr.invoke(onConnectorFactory, operation, values
00098                         , saCreateStandardConnectorTypes);
00099 
00100                 /*
00101                 // Look up the Catalina MBeanFactory
00102                 ObjectName onFactory = CatalinaObjectName.catalinaFactory();
00103                 values[0] = CatalinaObjectName.catalinaService(m_WhereAreYou.
00104                     getCurrentCatalinaDomainName()
00105                     , m_WhereAreYou.getCurrentCatalinaServiceName()).toString();
00106                 values[1] = address;
00107                 values[2] = new Integer(oForm.getPortText());
00108 
00109                 if ("HTTP".equalsIgnoreCase(sConnectorType)) {
00110                     operation = "createHttpConnector"; // HTTP
00111                 }
00112                 else if ("HTTPS".equalsIgnoreCase(sConnectorType)) {
00113                     operation = "createHttpsConnector"; // HTTPS
00114                 }
00115                 else {
00116                     operation = "createAjpConnector"; // AJP(HTTP)
00117                 }
00118                 sObjectName = (String) JonasManagementRepr.invoke(onFactory, operation, values
00119                     , sa_CreateStandardConnectorTypes);
00120                 */
00121                 if (sObjectName == null) {
00122                     saveErrors(p_Request, m_Errors);
00123                     return (p_Mapping.findForward("Global Error"));                     
00124                 }
00125                 // refresh tree
00126                 refreshTree(p_Request);
00127                 // Force the node selected in tree
00128                 String nodeName = getTreeBranchName(DEPTH_SERVER)
00129                     + WhereAreYou.NODE_SEPARATOR + "protocols"
00130                     + WhereAreYou.NODE_SEPARATOR + "connectors"
00131                     //+ WhereAreYou.NODE_SEPARATOR + m_WhereAreYou.getCurrentCatalinaServiceName()
00132                     + WhereAreYou.NODE_SEPARATOR + oForm.getPortText();
00133                 if (address != null) {
00134                     nodeName = nodeName
00135                     + WhereAreYou.NODE_SEPARATOR + address;
00136                 }
00137                 m_WhereAreYou.selectNameNode(nodeName, true);
00138 
00139             }
00140 
00141             ObjectName oObjectName = new ObjectName(sObjectName);
00142 
00143             setIntegerAttribute(oObjectName, "debug", oForm.getDebugLvl());
00144             setIntegerAttribute(oObjectName, "acceptCount", oForm.getAcceptCountText());
00145             setIntegerAttribute(oObjectName, "connectionTimeout", oForm.getConnTimeOutText());
00146             setIntegerAttribute(oObjectName, "bufferSize", oForm.getBufferSizeText());
00147             setBooleanAttribute(oObjectName, "enableLookups", oForm.isEnableLookups());
00148             setIntegerAttribute(oObjectName, "redirectPort", oForm.getRedirectPortText());
00149             setIntegerAttribute(oObjectName, "maxProcessors", oForm.getMaxThreadsText());
00150             setIntegerAttribute(oObjectName, "minProcessors", oForm.getMinSpareThreadsText());
00151             setIntegerAttribute(oObjectName, "maxSpareThreads", oForm.getMaxSpareThreadsText());
00152 
00153             // proxy name and port do not exist for AJP connector
00154             if ("AJP".equalsIgnoreCase(sConnectorType) == false) {
00155                 setStringAttribute(oObjectName, "proxyName", oForm.getProxyName());
00156                 setIntegerAttribute(oObjectName, "proxyPort", oForm.getProxyPortText());
00157             }
00158 
00159             // HTTPS specific properties
00160             if ("HTTPS".equalsIgnoreCase(sConnectorType) == true) {
00161                 setBooleanAttribute(oObjectName, "clientAuth", oForm.isClientAuthentication());
00162                 setStringAttribute(oObjectName, "keystoreFile", oForm.getKeyStoreFileName());
00163                 setStringAttribute(oObjectName, "keystorePass", oForm.getKeyStorePassword());
00164             }
00165 
00166             if ("create".equals(sAction) == true) {
00167                 m_Session.removeAttribute(p_Mapping.getAttribute());
00168                 sForward = "ActionListCatalinaConnectors";
00169             }
00170 
00171             // Save in configuration file
00172             if (oForm.isSave() == true) {
00173                 oForm.setSave(false);
00174                 p_Request.setAttribute("forward", sForward);
00175                 sForward = "ActionEditServletServer";
00176                 //ObjectName on = CatalinaObjectName.catalinaServer();
00177                 //JonasManagementRepr.invoke(on, "store", null, null);
00178             }
00179         }
00180         catch (Throwable t) {
00181             addGlobalError(t);
00182             saveErrors(p_Request, m_Errors);
00183             return (p_Mapping.findForward("Global Error"));
00184         }
00185 
00186         // Forward to the connector display page or the list if create
00187         return p_Mapping.findForward(sForward);
00188     }
00189 }

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