remm 02/01/05 12:45:04 Modified: webapps/admin/WEB-INF struts-config.xml webapps/admin/WEB-INF/classes/org/apache/webapp/admin ApplicationResources_en.properties ApplicationResources_es.properties ServerForm.java TomcatTreeBuilder.java Added: webapps/admin connector.jsp webapps/admin/WEB-INF/classes/org/apache/webapp/admin ConnectorAction.java ConnectorForm.java SetUpConnectorAction.java Log: - Connector functionality that enables connectors and their attributes to be viewed and edited through the admin tool. - Patch submitted by Manveen Kaur <manveen.kaur at sun.com> Revision Changes Path 1.1 jakarta-tomcat-4.0/webapps/admin/connector.jsp Index: connector.jsp =================================================================== <!-- Standard Struts Entries --> <%@ page language="java" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> <%@ taglib uri="/WEB-INF/controls.tld" prefix="controls" %> <html:html locale="true"> <%@ include file="header.jsp" %> <!-- Body --> <body bgcolor="white"> <!--Form --> <html:errors/> <html:form method="POST" action="/connector"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr bgcolor="7171A5"> <td width="81%"> <html:hidden property="connectorName"/> <div class="page-title-text" align="left">Connector ( <bean:write name="connectorForm" property="scheme" scope="session"/> ) </div> </td> <td width="19%"> <div align="right"> <controls:actions> <controls:action selected="true"> ----<bean:message key="actions.available.actions"/>---- </controls:action> <controls:action> --------------------------------- </controls:action> <!-- will add the urls later once those screens get implemented --> <controls:action url=""> <bean:message key="actions.thisconnector.delete"/> </controls:action> </controls:actions> </div> </td> </tr> </table> <%@ include file="buttons.jsp" %> <br> <table class="back-table" border="0" cellspacing="0" cellpadding="1" width="100%"> <tr> <td> <controls:table tableStyle="front-table" lineStyle="line-row"> <controls:row header="true" labelStyle="table-header-text" dataStyle="table-header-text"> <controls:label>General</controls:label> <controls:data> </controls:data> </controls:row> <controls:row labelStyle="table-label-text" dataStyle="table-normal-text"> <controls:label><bean:message key="connector.type"/>:</controls:label> <controls:data> <bean:write name="connectorForm" property="scheme" scope="session"/> </controls:data> </controls:row> <controls:row labelStyle="table-label-text" dataStyle="table-normal-text"> <controls:label><bean:message key="connector.accept.count"/>:</controls:label> <controls:data> <html:text property="acceptCountText" size="5" maxlength="5"/> </controls:data> </controls:row> <controls:row labelStyle="table-label-text" dataStyle="table-normal-text"> <controls:label><bean:message key="connector.connection.timeout"/><br> (milliseconds) :</controls:label> <controls:data> <html:text property="connTimeOutText" size="10"/> </controls:data> </controls:row> <controls:row labelStyle="table-label-text" dataStyle="table-normal-text"> <controls:label><bean:message key="server.debuglevel"/>:</controls:label> <controls:data> <html:select property="debugLvl"> <bean:define id="debugLvlVals" name="connectorForm" property="debugLvlVals"/> <html:options collection="debugLvlVals" property="value" labelProperty="label"/> </html:select> </controls:data> </controls:row> <controls:row labelStyle="table-label-text" dataStyle="table-normal-text"> <controls:label><bean:message key="connector.default.buffer"/>:</controls:label> <controls:data> <html:text property="bufferSizeText" size="5"/> </controls:data> </controls:row> <controls:row labelStyle="table-label-text" dataStyle="table-normal-text"> <controls:label><bean:message key="connector.enable.dns"/>:</controls:label> <controls:data> <html:select property="enableLookups"> <bean:define id="booleanVals" name="connectorForm" property="booleanVals"/> <html:options collection="booleanVals" property="value" labelProperty="label"/> </html:select> </controls:data> </controls:row> <controls:row labelStyle="table-label-text" dataStyle="table-normal-text"> <controls:label><bean:message key="connector.address.ip"/>:</controls:label> <controls:data> <html:text property="address" size="20"/> </controls:data> </controls:row> <controls:row header="true" labelStyle="table-header-text" dataStyle="table-header-text"> <controls:label>Ports</controls:label> <controls:data> </controls:data> </controls:row> <controls:row labelStyle="table-label-text" dataStyle="table-normal-text"> <controls:label><bean:message key="server.portnumber"/>:</controls:label> <controls:data> <html:text property="portText" size="5"/> </controls:data> </controls:row> <controls:row labelStyle="table-label-text" dataStyle="table-normal-text"> <controls:label><bean:message key="connector.redirect.portnumber"/>:</controls:label> <controls:data> <html:text property="redirectPortText" size="5"/> </controls:data> </controls:row> <controls:row header="true" labelStyle="table-header-text" dataStyle="table-header-text"> <controls:label>Processors</controls:label> <controls:data> </controls:data> </controls:row> <controls:row labelStyle="table-label-text" dataStyle="table-normal-text"> <controls:label><bean:message key="connector.min"/>:</controls:label> <controls:data> <html:text property="minProcessorsText" size="5"/> </controls:data> </controls:row> <controls:row labelStyle="table-label-text" dataStyle="table-normal-text"> <controls:label><bean:message key="connector.max"/>:</controls:label> <controls:data> <html:text property="maxProcessorsText" size="5"/> </controls:data> </controls:row> <controls:row header="true" labelStyle="table-header-text" dataStyle="table-header-text"> <controls:label>Proxy</controls:label> <controls:data> </controls:data> </controls:row> <controls:row labelStyle="table-label-text" dataStyle="table-normal-text"> <controls:label><bean:message key="connector.proxy.name"/>:</controls:label> <controls:data> <html:text property="proxyName" size="30"/> </controls:data> </controls:row> <controls:row labelStyle="table-label-text" dataStyle="table-normal-text"> <controls:label><bean:message key="connector.proxy.portnumber"/>:</controls:label> <controls:data> <html:text property="proxyPortText" size="5"/> </controls:data> </controls:row> </controls:table> </td> </tr> </table> <%@ include file="buttons.jsp" %> <br> </html:form> <p> </p> </body> </html:html> 1.13 +8 -0 jakarta-tomcat-4.0/webapps/admin/WEB-INF/struts-config.xml Index: struts-config.xml =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/struts-config.xml,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- struts-config.xml 20 Dec 2001 09:31:51 -0000 1.12 +++ struts-config.xml 5 Jan 2002 20:45:03 -0000 1.13 @@ -148,6 +148,14 @@ input="/service.jsp"> </action> + <!-- Process a connector change --> + <action path="/connector" + type="org.apache.webapp.admin.ConnectorAction" + name="connectorForm" + scope="session" + input="/connector.jsp"> + </action> + <!-- Process a set-locale action --> <action path="/setLocale" type="org.apache.webapp.admin.SetLocaleAction" 1.11 +26 -4 jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ApplicationResources_en.properties Index: ApplicationResources_en.properties =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ApplicationResources_en.properties,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- ApplicationResources_en.properties 3 Jan 2002 23:21:53 -0000 1.10 +++ ApplicationResources_en.properties 5 Jan 2002 20:45:03 -0000 1.11 @@ -27,11 +27,34 @@ server.debuglevel=Debug Level server.shutdown=Shutdown server.properties=Properties -error.portNumberText.required=<li>PortNumber cannot be empty</li> -error.shutdownText.length=<li>Shutdown Text must be atleast 6 characters</li> +error.portNumber.required=<li>PortNumber cannot be empty</li> error.portNumber.format=<li>PortNumber not a valid integer!</li> error.portNumber.range=<li>PortNumber seems out of range. Valid range is 1-65535. </li> -error.engineName.required=<li>Engine name is required</li> +error.shutdownText.length=<li>Shutdown Text must be atleast 6 characters</li> +error.engineName.required=<li>Engine name is required</li> +error.acceptCountText.required=<li>Accept count required</li> +error.acceptCountText.format=<li>Accept count not a valid integer!</li> +error.acceptCountText.range=<li>Accept count seems out of range. Valid range is 1-218. </li> +error.connTimeOutText.required=<li>Connection time out required</li> +error.connTimeOutText.format=<li>Connection time out not a valid integer!</li> +error.connTimeOutText.range=<li>Connection time out seems out of range. Valid range is 0-60000. </li> +error.bufferSizeText.required=<li>Buffer Size required</li> +error.bufferSizeText.format=<li>Buffer Size not a valid integer!</li> +error.bufferSizeText.range=<li>Buffer Size seems out of range. Valid range is 1-8192. </li> +error.address.invalid=<li>IP Address invalid</li> +error.redirectPortText.required=<li>Redirect Port Number cannot be empty</li> +error.redirectPortText.format=<li>Redirect Port Number not a valid integer!</li> +error.redirectPortText.range=<li>Redirect Port Number seems out of range. Valid range is 1-65535. </li> +error.minProcessorsText.required=<li>Minimum Processors cannot be empty</li> +error.minProcessorsText.format=<li>Minimum Processors not a valid integer!</li> +error.minProcessorsText.range=<li>Minimum Processors seems out of range. Valid range is 1-512. </li> +error.maxProcessorsText.required=<li>Maximum Processors cannot be empty</li> +error.maxProcessorsText.format=<li>Maximum Processors not a valid integer!</li> +error.maxProcessorsText.range=<li>Maximum Processors seems out of range. Valid range is 1-512. Also, maximum >= minimum. </li> +error.proxyName.invalid=<li>Proxy name is invalid</li> +error.proxyPortText.required=<li>Proxy Port Number cannot be empty</li> +error.proxyPortText.format=<li>Proxy Port Number not a valid integer!</li> +error.proxyPortText.range=<li>Proxy Port Number seems out of range. Valid range is 1-65535. </li> service.service=Service service.name=Name service.engine.props=Engine properties @@ -69,4 +92,3 @@ connector.max=Maximum connector.proxy.name=Proxy Name connector.proxy.portnumber=Proxy Port Number -error.acceptCountText.required=<li>Accept count required</li> 1.13 +25 -3 jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ApplicationResources_es.properties Index: ApplicationResources_es.properties =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ApplicationResources_es.properties,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- ApplicationResources_es.properties 3 Jan 2002 23:21:53 -0000 1.12 +++ ApplicationResources_es.properties 5 Jan 2002 20:45:03 -0000 1.13 @@ -27,11 +27,34 @@ server.debuglevel=Nivel de Depuracion server.shutdown=Detener server.properties=Caracteristicas -error.portNumberText.required=<li>El numero del puerto no puede estar vacio.</li> -error.shutdownText.length=<li>El texto de la para Detener debe ser de al menos 6 caracteres!</li> +error.portNumber.required=<li>El numero del puerto no puede estar vacio.</li> error.portNumber.format=<li>El numero de puerto es un entero no valido! </li> error.portNumber.range=<li>El numero de puerto esta fuera del rango. El rango valido es 1-65535.</li> +error.shutdownText.length=<li>El texto de la para Detener debe ser de al menos 6 caracteres!</li> error.engineName.required=<li>Se requiere el nombre del motor</li> +error.acceptCountText.required=<li>Valide la cuenta requerida</li> +error.acceptCountText.format=<li>Valide la cuenta no un numero entero valido!</li> +error.acceptCountText.range=<li>Valide la cuenta se parece fuera de rango. El rango válido es 1-218. </li> +error.connTimeOutText.required=<li>Tiempo de conexion fuera de requerido</li> +error.connTimeOutText.format=<li>Tiempo de conexion fuera no de un numero entero valido! </li> +error.connTimeOutText.range=<li>El tiempo de conexion hacia fuera se parece fuera de rango. El rango válido es 0-60000. </li> +error.bufferSizeText.required=<li>Talla de almacenador intermediario requerida</li> +error.bufferSizeText.format=<li>Talla de almacenador intermediario no un numero entero valido! </li> +error.bufferSizeText.range=<li>La talla de almacenador intermediario se parece fuera de rango. El rango valid es 1-8192. </li> +error.address.invalid=<li>EL IP ADDRESS no valido</li> +error.redirectPortText.required=<li>Vuelva a dirigir el numero de acceso no puede ser vacio </li> +error.redirectPortText.format=<li>Vuelva a dirigir el numero de acceso no un numero entero valido! </li> +error.redirectPortText.range=<li>Vuelva a dirigir el numero de acceso se parece fuera de rango. El rango validoes 1-65535.</li> +error.minProcessorsText.required=<li>Los procesadores minimos no pueden ser vacios</li> +error.minProcessorsText.format=<li>Procesadores minimos no un numero entero valido!</li> +error.minProcessorsText.range=<li>Los procesadores minimos se parecen fuera de rango. El rango valido es 1-512. </li> +error.maxProcessorsText.required=<li>Los procesadores maximos no pueden ser vacios</li> +error.maxProcessorsText.format=<li>Procesadores maximos no un numero entero valido!</li> +error.maxProcessorsText.range=<li>Los procesadores maximos se parecen fuera de rango. El rango valido es 1-512. Tambien, maximo > = minimo.</li> +error.proxyPortText.required=<li>El numero de acceso del poder no puede ser vacio</li> +error.proxyName.invalid=<li>El nombre del poder es invalido</li> +error.proxyPortText.format=<li>Numero de acceso del poder no un numero entero valido!</li> +error.proxyPortText.range=<li>El numero de acceso del poder se parece fuera de rango. El rango valido es 1-65535.</li> service.service=Mantienen service.name=Nombre service.engine.props=Caracteristicas del motor @@ -69,4 +92,3 @@ connector.max=Maximo connector.proxy.name=Nombre del poder connector.proxy.portnumber=Numero de acceso del poder -error.acceptCountText.required=Valide la cuenta requerida 1.5 +5 -5 jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ServerForm.java Index: ServerForm.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ServerForm.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- ServerForm.java 20 Dec 2001 09:31:52 -0000 1.4 +++ ServerForm.java 5 Jan 2002 20:45:03 -0000 1.5 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ServerForm.java,v 1.4 2001/12/20 09:31:52 remm Exp $ - * $Revision: 1.4 $ - * $Date: 2001/12/20 09:31:52 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ServerForm.java,v 1.5 2002/01/05 20:45:03 remm Exp $ + * $Revision: 1.5 $ + * $Date: 2002/01/05 20:45:03 $ * * ==================================================================== * @@ -74,7 +74,7 @@ * Form bean for the server form page. * @author Patrick Luby * @author Manveen Kaur - * @version $Revision: 1.4 $ $Date: 2001/12/20 09:31:52 $ + * @version $Revision: 1.5 $ $Date: 2002/01/05 20:45:03 $ */ public final class ServerForm extends ActionForm { @@ -211,7 +211,7 @@ if ((portNumberText == null) || (portNumberText.length() < 1)) { errors.add("portNumberText", - new ActionError("error.portNumberText.required")); + new ActionError("error.portNumber.required")); } else { try { int port = Integer.parseInt(portNumberText); 1.4 +23 -27 jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/TomcatTreeBuilder.java Index: TomcatTreeBuilder.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/TomcatTreeBuilder.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- TomcatTreeBuilder.java 14 Dec 2001 23:22:33 -0000 1.3 +++ TomcatTreeBuilder.java 5 Jan 2002 20:45:03 -0000 1.4 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/TomcatTreeBuilder.java,v 1.3 2001/12/14 23:22:33 patrickl Exp $ - * $Revision: 1.3 $ - * $Date: 2001/12/14 23:22:33 $ + * $Header: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/TomcatTreeBuilder.java,v 1.4 2002/01/05 20:45:03 remm Exp $ + * $Revision: 1.4 $ + * $Date: 2002/01/05 20:45:03 $ * * ==================================================================== * @@ -91,11 +91,10 @@ * * @author Jazmin Jonson * @author Manveen Kaur - * @version + * @version $Revision: 1.4 $ $Date: 2002/01/05 20:45:03 $ */ - public class TomcatTreeBuilder implements TreeBuilder{ // This SERVER_LABEL needs to be localized @@ -104,8 +103,8 @@ public final static String SERVER_TYPE = "Catalina:type=Server"; public final static String SERVICE_TYPE = "Catalina:type=Service"; public final static String ENGINE_TYPE = "Catalina:type=Engine"; - private final static String CONNECTOR_TYPE = "Catalina:type=Connector"; - public final static String HOST_TYPE = "Catalina:type=Host"; + public final static String CONNECTOR_TYPE = "Catalina:type=Connector"; + public final static String HOST_TYPE = "Catalina:type=Host"; public final static String WILDCARD = ",*"; private static MBeanServer mBServer = null; @@ -151,7 +150,6 @@ } - public void getServices(TreeControlNode serverNode) throws JMException, ServletException { @@ -185,14 +183,13 @@ serverNode.addChild(serviceNode); getConnectors(serviceNode, serviceName); + } } public void getConnectors(TreeControlNode serviceNode, - String serviceName) - - throws JMException{ - + String serviceName) + throws JMException{ Iterator ConnectorItr = (mBServer.queryMBeans(new ObjectName(CONNECTOR_TYPE + WILDCARD + @@ -210,23 +207,22 @@ (String)mBServer.getAttribute(connectorObj.getObjectName(), "scheme"); - // HACK to take into account special characters like = and & - // in the node name, could remove this code if encode URL - // and later request.getParameter() could deal with = and & - // character in parameter values. Decoding name not needed - // because Tomcat does this automatically - encodedConnectorName = URLEncoder.encode(connectorObj.getObjectName().toString()); - connectorNode = - new TreeControlNode(connectorObj.getObjectName().toString(), - "folder_16_pad.gif", - "Connector(" + connectorName + ")", - "treeControlTest.do?select=" + - encodedConnectorName, - null, true); - - serviceNode.addChild(connectorNode); + // Do not display the connector node if it is a warp connector. + // This is because warp connector doesn't conform to the + // standard Engine/Host/Context hierarchy and we don't support it. + if (!"warp".equalsIgnoreCase(connectorName)) { + connectorNode = + new TreeControlNode(connectorObj.getObjectName().toString(), + "folder_16_pad.gif", + "Connector(" + connectorName + ")", + "setUpConnector.do?select=" + + encodedConnectorName, + "content", true); + + serviceNode.addChild(connectorNode); + } } } 1.1 jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ConnectorAction.java Index: ConnectorAction.java =================================================================== /* * $Header: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ConnectorAction.java,v 1.1 2002/01/05 20:45:03 remm Exp $ * $Revision: 1.1 $ * $Date: 2002/01/05 20:45:03 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Struts", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.webapp.admin; import java.util.Iterator; import java.util.Locale; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.Action; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import javax.management.Attribute; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; import javax.management.QueryExp; import javax.management.Query; import javax.management.ObjectInstance; import javax.management.ObjectName; import javax.management.JMException; import javax.management.MBeanAttributeInfo; import javax.management.MBeanOperationInfo; import javax.management.MBeanInfo; import org.apache.struts.util.MessageResources; /** * Implementation of <strong>Action</strong> that validates * actions on a Connector. * * @author Manveen Kaur * @version $Revision: 1.1 $ $Date: 2002/01/05 20:45:03 $ */ public final class ConnectorAction extends Action { private static MBeanServer mBServer = null; // --------------------------------------------------------- Public Methods /** * Process the specified HTTP request, and create the corresponding HTTP * response (or forward to another web component that will create it). * Return an <code>ActionForward</code> instance describing where and how * control should be forwarded, or <code>null</code> if the response has * already been completed. * * @param mapping The ActionMapping used to select this instance * @param actionForm The optional ActionForm bean for this request (if any) * @param request The HTTP request we are processing * @param response The HTTP response we are creating * * @exception IOException if an input/output error occurs * @exception ServletException if a servlet exception occurs */ public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { try{ // front end validation and checking. // =================================================== MessageResources messages = getResources(); Locale locale = (Locale)request.getSession().getAttribute(Action.LOCALE_KEY); // Validate the request parameters specified by the user ActionErrors errors = new ActionErrors(); // Report any errors we have discovered back to the original form if (!errors.empty()) { saveErrors(request, errors); return (new ActionForward(mapping.getInput())); } if(mBServer == null) { ApplicationServlet servlet = (ApplicationServlet)getServlet(); mBServer = servlet.getServer(); } /** * Get the connector Name from the form. * This is used to lookup the MBeanServer and * retrieve this connector's MBean. */ String connectorName = request.getParameter("connectorName"); Iterator connectorItr = mBServer.queryMBeans(new ObjectName(connectorName), null).iterator(); ObjectInstance objInstance = (ObjectInstance)connectorItr.next(); ObjectName connectorObjName = (objInstance).getObjectName(); /** * Extracting the values from the form and * updating the MBean with the new values. */ String debugLvlText = request.getParameter("debugLvl"); if(debugLvlText != null) { Integer debugLvl = new Integer(debugLvlText); mBServer.setAttribute(connectorObjName, new Attribute(SetUpConnectorAction.DEBUG_PROP_NAME, debugLvl)); } String acceptCountText = request.getParameter("acceptCountText"); if(acceptCountText != null) { Integer acceptCount = new Integer(acceptCountText); mBServer.setAttribute(connectorObjName, new Attribute(SetUpConnectorAction.ACCEPT_COUNT_PROP_NAME, acceptCount)); } String connTimeOutText = request.getParameter("connTimeOutText"); if(connTimeOutText != null) { Integer connTimeOut = new Integer(connTimeOutText); mBServer.setAttribute(connectorObjName, new Attribute(SetUpConnectorAction.CONN_TO_PROP_NAME, connTimeOut)); } String bufferSizeText = request.getParameter("bufferSizeText"); if(bufferSizeText != null) { Integer bufferSize = new Integer(bufferSizeText); mBServer.setAttribute(connectorObjName, new Attribute(SetUpConnectorAction.BUFF_SIZE_PROP_NAME, bufferSize)); } String enableLookups = request.getParameter("enableLookups"); if(enableLookups != null) { Boolean enable = Boolean.valueOf(enableLookups); mBServer.setAttribute(connectorObjName, new Attribute(SetUpConnectorAction.ENABLE_LOOKUPS_PROP_NAME, enable)); } String address = request.getParameter("address"); if(address != null) { mBServer.setAttribute(connectorObjName, new Attribute(SetUpConnectorAction.ADDRESS_PROP_NAME, address)); } String minProcessorsText = request.getParameter("minProcessorsText"); if (minProcessorsText != null) { Integer minProcessors = new Integer(minProcessorsText); mBServer.setAttribute(connectorObjName, new Attribute(SetUpConnectorAction.PROC_MIN_PROP_NAME, minProcessors)); } String maxProcessorsText = request.getParameter("maxProcessorsText"); if(maxProcessorsText != null) { Integer maxProcessors = new Integer(maxProcessorsText); mBServer.setAttribute(connectorObjName, new Attribute(SetUpConnectorAction.PROC_MAX_PROP_NAME, maxProcessors)); } String portText = request.getParameter("portText"); if (portText != null) { Integer port = new Integer(portText); mBServer.setAttribute(connectorObjName, new Attribute(SetUpConnectorAction.PORT_PROP_NAME, port)); } String redirectPortText = request.getParameter("redirectPortText"); if(redirectPortText != null) { Integer redirectPort = new Integer(redirectPortText); mBServer.setAttribute(connectorObjName, new Attribute(SetUpConnectorAction.REDIRECT_PORT_PROP_NAME, redirectPort)); } String proxyName = request.getParameter("proxyName"); if (proxyName != null) { mBServer.setAttribute(connectorObjName, new Attribute(SetUpConnectorAction.PROXY_NAME_PROP_NAME, proxyName)); } String proxyPortText = request.getParameter("proxyPortText"); if(proxyPortText != null) { Integer proxyPort = new Integer(proxyPortText); mBServer.setAttribute(connectorObjName, new Attribute(SetUpConnectorAction.PROXY_PORT_PROP_NAME, proxyPort)); } }catch(Throwable t){ t.printStackTrace(System.out); //forward to error page } if (servlet.getDebug() >= 1) servlet.log(" Forwarding to success page"); // Forward back to the test page return (mapping.findForward("Save Successful")); } } 1.1 jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ConnectorForm.java Index: ConnectorForm.java =================================================================== /* * $Header: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/ConnectorForm.java,v 1.1 2002/01/05 20:45:03 remm Exp $ * $Revision: 1.1 $ * $Date: 2002/01/05 20:45:03 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Struts", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.webapp.admin; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import java.net.InetAddress; import java.util.ArrayList; /** * Form bean for the connector page. * * @author Manveen Kaur * @version $Revision: 1.1 $ $Date: 2002/01/05 20:45:03 $ */ public final class ConnectorForm extends ActionForm { // ----------------------------------------------------- Instance Variables /** * The text for the scheme. */ private String scheme = null; /** * The text for the accept Count. */ private String acceptCountText = null; /** * The text for the Connection Time Out. */ private String connTimeOutText = null; /** * The text for the debug level. */ private String debugLvl = "0"; /** * The text for the buffer size. */ private String bufferSizeText = null; /** * The value of eanble Lookups. */ private String enableLookups = "false"; /** * The text for the address. */ private String address = null; /** * The text for the minProcessors. */ private String minProcessorsText = null; /** * The text for the max Processors. */ private String maxProcessorsText = null; /** * The text for the port. */ private String portText = null; /** * The text for the redirect port. */ private String redirectPortText = null; /** * The text for the proxyName. */ private String proxyName = null; /** * The text for the proxy Port Number. */ private String proxyPortText = null; /** * The text for the connectorName. */ private String connectorName = null; /** * Set of valid values for debug level. */ private ArrayList debugLvlVals = null; /* * Represent boolean (true, false) values for enableLookups etc. */ private ArrayList booleanVals = null; // ------------------------------------------------------------- Properties /** * Return the Class Name. */ public String getScheme() { return this.scheme; } /** * Set the Scheme. */ public void setScheme(String scheme) { this.scheme = scheme; } /** * Return the acceptCountText. */ public String getAcceptCountText() { return this.acceptCountText; } /** * Set the acceptCountText. */ public void setAcceptCountText(String acceptCountText) { this.acceptCountText = acceptCountText; } /** * Return the connTimeOutText. */ public String getConnTimeOutText() { return this.connTimeOutText; } /** * Set the connTimeOutText. */ public void setConnTimeOutText(String connTimeOutText) { this.connTimeOutText = connTimeOutText; } /** * Return the bufferSizeText. */ public String getBufferSizeText() { return this.bufferSizeText; } /** * Set the bufferSizeText. */ public void setBufferSizeText(String bufferSizeText) { this.bufferSizeText = bufferSizeText; } /** * Return the address. */ public String getAddress() { return this.address; } /** * Set the connTimeOutText. */ public void setAddress(String address) { this.address = address; } /** * Return the proxy Name. */ public String getProxyName() { return this.proxyName; } /** * Set the proxy Name. */ public void setProxyName(String proxyName) { this.proxyName = proxyName; } /** * Return the proxy Port NumberText. */ public String getProxyPortText() { return this.proxyPortText; } /** * Set the proxy Port NumberText. */ public void setProxyPortText(String proxyPortText) { this.proxyPortText = proxyPortText; } /** * Return the debugVals. */ public ArrayList getDebugLvlVals() { return this.debugLvlVals; } /** * Set the debugVals. */ public void setDebugLvlVals(ArrayList debugLvlVals) { this.debugLvlVals = debugLvlVals; } /** * Return the Debug Level Text. */ public String getDebugLvl() { return this.debugLvl; } /** * Set the Debug Level Text. */ public void setDebugLvl(String debugLvl) { this.debugLvl = debugLvl; } /** * Return the Enable lookup Text. */ public String getEnableLookups() { return this.enableLookups; } /** * Set the Enable Lookup Text. */ public void setEnableLookups(String enableLookups) { this.enableLookups = enableLookups; } /** * Return the booleanVals. */ public ArrayList getBooleanVals() { return this.booleanVals; } /** * Set the debugVals. */ public void setBooleanVals(ArrayList booleanVals) { this.booleanVals = booleanVals; } /** * Return the min Processors Text. */ public String getMinProcessorsText() { return this.minProcessorsText; } /** * Set the minProcessors Text. */ public void setMinProcessorsText(String minProcessorsText) { this.minProcessorsText = minProcessorsText; } /** * Return the max processors Text. */ public String getMaxProcessorsText() { return this.maxProcessorsText; } /** * Set the Max Processors Text. */ public void setMaxProcessorsText(String maxProcessorsText) { this.maxProcessorsText = maxProcessorsText; } /** * Return the port text. */ public String getPortText() { return this.portText; } /** * Set the port Text. */ public void setPortText(String portText) { this.portText = portText; } /** * Return the port. */ public String getRedirectPortText() { return this.redirectPortText; } /** * Set the Redirect Port Text. */ public void setRedirectPortText(String redirectPortText) { this.redirectPortText = redirectPortText; } /** * Return the Service Name. */ public String getConnectorName() { return this.connectorName; } /** * Set the Service Name. */ public void setConnectorName(String connectorName) { this.connectorName = connectorName; } // --------------------------------------------------------- Public Methods /** * Reset all properties to their default values. * * @param mapping The mapping used to select this instance * @param request The servlet request we are processing */ public void reset(ActionMapping mapping, HttpServletRequest request) { this.portText = null; this.acceptCountText = null; this.connTimeOutText = null; this.bufferSizeText = null; this.address = null; this.enableLookups = "false"; this.minProcessorsText = null; this.maxProcessorsText = null; this.portText = null; this.redirectPortText = null; this.proxyName = null; this.proxyPortText = null; } /** * Validate the properties that have been set from this HTTP request, * and return an <code>ActionErrors</code> object that encapsulates any * validation errors that have been found. If no errors are found, return * <code>null</code> or an <code>ActionErrors</code> object with no * recorded error messages. * * @param mapping The mapping used to select this instance * @param request The servlet request we are processing */ private ActionErrors errors; public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { errors = new ActionErrors(); String submit = request.getParameter("submit"); // front end validation when save is clicked. if (submit != null) { /* general */ numberCheck("acceptCountText", acceptCountText, true, 1, 128); numberCheck("connTimeOutText", connTimeOutText, true, 0, 60000); numberCheck("bufferSizeText", bufferSizeText, true, 1, 8192); /* The IP address can also be null -- which means open the server socket on *all* IP addresses for this host */ if (address.length() > 0) { try { InetAddress.getByName(address); } catch (Exception e) { errors.add("address", new ActionError("error.address.invalid")); } } /* ports */ numberCheck("portNumber", portText, true, 1, 65535); numberCheck("redirectPortText", redirectPortText, true, 0, 65535); /* processors*/ numberCheck("minProcessorsText", minProcessorsText, true, 1, 512); try { // if min is a valid integer, then check that max >= min int min = Integer.parseInt(minProcessorsText); numberCheck("maxProcessorsText", maxProcessorsText, true, min-1, 512); } catch (Exception e) { // check for the complete range numberCheck("maxProcessorsText", maxProcessorsText, true, 1, 512); } /* proxy*/ if ((proxyName!= null) && (proxyName.length() > 0)) { try { InetAddress.getByName(proxyName); } catch (Exception e) { errors.add("proxyName", new ActionError("error.proxyName.invalid")); } } numberCheck("proxyPortText", proxyPortText, true, 0, 65535); } return errors; } /* * Helper method to check that it is a reuired number and * is a valid integer within the given range. (min, max). * * @param field The field name in the form for which this error occured. * @param numText The string representation of the number. * @param rangeCheck Boolean value set to true of reange check should be performed. * * @param min The lower limit of the range * @param max The upper limit of the range * */ private void numberCheck(String field, String numText, boolean rangeCheck, int min, int max) { /* Check for 'is required' */ if ((numText == null) || (numText.length() < 1)) { errors.add(field, new ActionError("error."+field+".required")); } else { /*check for 'must be a number' in the 'valid range'*/ try { int num = Integer.parseInt(numText); // perform range check only if required if (rangeCheck) { if ((num < min) || (num > max )) errors.add( field, new ActionError("error."+ field +".range")); } } catch (NumberFormatException e) { errors.add(field, new ActionError("error."+ field + ".format")); } } } } 1.1 jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/SetUpConnectorAction.java Index: SetUpConnectorAction.java =================================================================== /* * $Header: /home/cvs/jakarta-tomcat-4.0/webapps/admin/WEB-INF/classes/org/apache/webapp/admin/SetUpConnectorAction.java,v 1.1 2002/01/05 20:45:03 remm Exp $ * $Revision: 1.1 $ * $Date: 2002/01/05 20:45:03 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 2001 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR connectorS; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.webapp.admin; import java.io.IOException; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.Action; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; import javax.management.QueryExp; import javax.management.Query; import javax.management.ObjectInstance; import javax.management.ObjectName; import javax.management.JMException; import javax.management.MBeanAttributeInfo; import javax.management.MBeanOperationInfo; import javax.management.MBeanInfo; import javax.management.modelmbean.ModelMBean; import javax.management.modelmbean.ModelMBeanInfo; import org.apache.struts.util.MessageResources; /** * Test <code>Action</code> that handles events from the tree control when * a connector is chosen. * * @author Manveen Kaur * @version $Revision: 1.1 $ $Date: 2002/01/05 20:45:03 $ */ public class SetUpConnectorAction extends Action { private static MBeanServer mBServer = null; public final static String SCHEME_PROP_NAME = "scheme"; public final static String ACCEPT_COUNT_PROP_NAME = "acceptCount"; public final static String CONN_TO_PROP_NAME = "connectionTimeout"; public final static String DEBUG_PROP_NAME = "debug"; public final static String BUFF_SIZE_PROP_NAME = "bufferSize"; public final static String ENABLE_LOOKUPS_PROP_NAME = "enableLookups"; public final static String ADDRESS_PROP_NAME = "address"; public final static String PORT_PROP_NAME = "port"; public final static String REDIRECT_PORT_PROP_NAME = "redirectPort"; public final static String PROC_MIN_PROP_NAME = "minProcessors"; public final static String PROC_MAX_PROP_NAME = "maxProcessors"; public final static String PROXY_NAME_PROP_NAME = "proxyName"; public final static String PROXY_PORT_PROP_NAME = "proxyPort"; private ArrayList debugLvlList = null; private ArrayList booleanList = null; // --------------------------------------------------------- Public Methods /** * Process the specified HTTP request, and create the corresponding HTTP * response (or forward to another web component that will create it). * Return an <code>ActionForward</code> instance describing where and how * control should be forwarded, or <code>null</code> if the response has * already been completed. * * @param mapping The ActionMapping used to select this instance * @param actionForm The optional ActionForm bean for this request (if any) * @param request The HTTP request we are processing * @param response The HTTP response we are creating * * @exception IOException if an input/output error occurs * @exception ServletException if a servlet exception occurs */ public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { HttpSession session = request.getSession(); if (form == null) { getServlet().log(" Creating new ConnectorForm bean under key " + mapping.getAttribute()); form = new ConnectorForm(); if ("request".equals(mapping.getScope())) request.setAttribute(mapping.getAttribute(), form); else session.setAttribute(mapping.getAttribute(), form); } String selectedName = request.getParameter("select"); ConnectorForm connectorFm = (ConnectorForm) form; if(debugLvlList == null) { debugLvlList = new ArrayList(); debugLvlList.add(new LabelValueBean("0", "0")); debugLvlList.add(new LabelValueBean("1", "1")); debugLvlList.add(new LabelValueBean("2", "2")); debugLvlList.add(new LabelValueBean("3", "3")); debugLvlList.add(new LabelValueBean("4", "4")); debugLvlList.add(new LabelValueBean("5", "5")); debugLvlList.add(new LabelValueBean("6", "6")); debugLvlList.add(new LabelValueBean("7", "7")); debugLvlList.add(new LabelValueBean("8", "8")); debugLvlList.add(new LabelValueBean("9", "9")); } /* Boolean (true.false) list for enableLookups */ if(booleanList == null) { booleanList = new ArrayList(); booleanList.add(new LabelValueBean("True", "true")); booleanList.add(new LabelValueBean("False", "false")); } String connectorName = null; String scheme = null; Integer debug = null; String acceptCountText = null; Integer connTimeOut = null; Integer bufferSize = null; String address = null; Boolean enableLookups = null; String portText = null; String redirectPortText = null; Integer maxProcessors = null; Integer minProcessors = null; String proxyName = null; String proxyPortText = null; try{ if(mBServer == null) { ApplicationServlet servlet = (ApplicationServlet)getServlet(); mBServer = servlet.getServer(); } Iterator connectorItr = mBServer.queryMBeans(new ObjectName(selectedName), null).iterator(); ObjectInstance objInstance = (ObjectInstance)connectorItr.next(); ObjectName connectorObjName = (objInstance).getObjectName(); /* ModelMBeanInfo info = (ModelMBeanInfo) mBServer.getMBeanInfo(connectorObjName); MBeanAttributeInfo attrs[] = info.getAttributes(); for (int i = 0; i < attrs.length; i++) System.out.println(" AttributeInfo=" + attrs[i]); MBeanOperationInfo opers[] = info.getOperations(); for (int i = 0; i < opers.length; i++) System.out.println(" Operation=" + opers[i]); */ // Extracting the attribute values for the Connector from the MBean scheme = (String) mBServer.getAttribute(connectorObjName, SCHEME_PROP_NAME); Integer acceptCount = (Integer) mBServer.getAttribute(connectorObjName, ACCEPT_COUNT_PROP_NAME); acceptCountText = acceptCount.toString(); connTimeOut = (Integer) mBServer.getAttribute(connectorObjName, CONN_TO_PROP_NAME); debug = (Integer) mBServer.getAttribute(connectorObjName, DEBUG_PROP_NAME); bufferSize = (Integer) mBServer.getAttribute(connectorObjName, BUFF_SIZE_PROP_NAME); address = (String) mBServer.getAttribute(connectorObjName, ADDRESS_PROP_NAME); enableLookups = (Boolean) mBServer.getAttribute(connectorObjName, ENABLE_LOOKUPS_PROP_NAME); Integer port = (Integer) mBServer.getAttribute(connectorObjName, PORT_PROP_NAME); if (port != null) portText = port.toString(); Integer redirectPort = (Integer) mBServer.getAttribute(connectorObjName, REDIRECT_PORT_PROP_NAME); redirectPortText = redirectPort.toString(); minProcessors = (Integer) mBServer.getAttribute(connectorObjName, PROC_MIN_PROP_NAME); maxProcessors = (Integer) mBServer.getAttribute(connectorObjName, PROC_MAX_PROP_NAME); proxyName = (String) mBServer.getAttribute(connectorObjName, PROXY_NAME_PROP_NAME); Integer proxyPort = (Integer) mBServer.getAttribute(connectorObjName, PROXY_PORT_PROP_NAME); proxyPortText = proxyPort.toString(); } catch(Throwable t){ t.printStackTrace(System.out); //forward to error page } //setting values obtained from the mBean to be displayed in the form. connectorFm.setScheme(scheme); connectorFm.setAcceptCountText(acceptCountText); connectorFm.setConnTimeOutText(connTimeOut.toString()); connectorFm.setDebugLvl(debug.toString()); connectorFm.setDebugLvlVals(debugLvlList); connectorFm.setEnableLookups(enableLookups.toString()); connectorFm.setBooleanVals(booleanList); connectorFm.setBufferSizeText(bufferSize.toString()); connectorFm.setAddress(address); connectorFm.setMinProcessorsText(minProcessors.toString()); connectorFm.setMaxProcessorsText(maxProcessors.toString()); connectorFm.setPortText(portText); connectorFm.setRedirectPortText(redirectPortText); connectorFm.setProxyName(proxyName); connectorFm.setProxyPortText(proxyPortText); connectorFm.setConnectorName(selectedName); // Forward back to the test page return (mapping.findForward("Connector")); } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>