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"
00058 };
00059
00060
00061
00062 public ActionForward executeAction(ActionMapping p_Mapping, ActionForm p_Form
00063 , HttpServletRequest p_Request, HttpServletResponse p_Response)
00064 throws IOException, ServletException {
00065
00066 String sForward = "Catalina Connector";
00067
00068 ConnectorForm oForm = (ConnectorForm) p_Form;
00069 String sAction = oForm.getAction();
00070 String sObjectName = oForm.getObjectName();
00071 String sConnectorType = oForm.getConnectorType();
00072
00073
00074 try {
00075
00076 if ("create".equals(sAction)) {
00077 String address = oForm.getAddress();
00078
00079
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
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
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121 if (sObjectName == null) {
00122 saveErrors(p_Request, m_Errors);
00123 return (p_Mapping.findForward("Global Error"));
00124 }
00125
00126 refreshTree(p_Request);
00127
00128 String nodeName = getTreeBranchName(DEPTH_SERVER)
00129 + WhereAreYou.NODE_SEPARATOR + "protocols"
00130 + WhereAreYou.NODE_SEPARATOR + "connectors"
00131
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
00154 if ("AJP".equalsIgnoreCase(sConnectorType) == false) {
00155 setStringAttribute(oObjectName, "proxyName", oForm.getProxyName());
00156 setIntegerAttribute(oObjectName, "proxyPort", oForm.getProxyPortText());
00157 }
00158
00159
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
00172 if (oForm.isSave() == true) {
00173 oForm.setSave(false);
00174 p_Request.setAttribute("forward", sForward);
00175 sForward = "ActionEditServletServer";
00176
00177
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
00187 return p_Mapping.findForward(sForward);
00188 }
00189 }