001: /**
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */package org.apache.geronimo.console.apache.jk;
017:
018: import java.io.IOException;
019: import javax.portlet.ActionRequest;
020: import javax.portlet.ActionResponse;
021: import javax.portlet.PortletException;
022: import javax.portlet.RenderRequest;
023: import javax.portlet.RenderResponse;
024: import org.apache.commons.logging.Log;
025: import org.apache.commons.logging.LogFactory;
026: import org.apache.geronimo.console.MultiPageModel;
027: import org.apache.geronimo.console.util.PortletManager;
028: import org.apache.geronimo.management.geronimo.NetworkConnector;
029: import org.apache.geronimo.management.geronimo.WebConnector;
030: import org.apache.geronimo.management.geronimo.WebManager;
031:
032: /**
033: * ReplaceMe
034: *
035: * @version $Rev: 476061 $ $Date: 2006-11-16 22:36:50 -0800 (Thu, 16 Nov 2006) $
036: */
037: public class AJPHandler extends BaseApacheHandler {
038: private final static Log log = LogFactory.getLog(AJPHandler.class);
039:
040: public AJPHandler() {
041: super (AJP_MODE, "/WEB-INF/view/apache/jk/ajpPort.jsp");
042: }
043:
044: public String actionBeforeView(ActionRequest request,
045: ActionResponse response, MultiPageModel model)
046: throws PortletException, IOException {
047: WebManager[] managers = PortletManager.getWebManagers(request);
048: // See if any AJP listeners are defined
049: for (int i = 0; i < managers.length; i++) {
050: WebManager manager = managers[i];
051: NetworkConnector[] connectors = manager
052: .getConnectors(WebManager.PROTOCOL_AJP);
053: if (connectors.length > 0) {
054: log.warn("Found AJP listener on port "
055: + connectors[0].getPort());
056: return BASIC_CONFIG_MODE + BEFORE_ACTION;
057: }
058: }
059: // Find an unused port
060: int port = 8009;
061: outer: while (true) {
062: for (int i = 0; i < managers.length; i++) {
063: WebManager manager = managers[i];
064: WebConnector[] cons = (WebConnector[]) manager
065: .getConnectors();
066: for (int j = 0; j < cons.length; j++) {
067: WebConnector con = cons[j];
068: if (con.getPort() == port) {
069: port += 10;
070: continue outer;
071: }
072: }
073: }
074: break;
075: }
076:
077: ((ApacheModel) model).setAddAjpPort(new Integer(port));
078:
079: return getMode();
080: }
081:
082: public void renderView(RenderRequest request,
083: RenderResponse response, MultiPageModel model)
084: throws PortletException, IOException {
085: }
086:
087: public String actionAfterView(ActionRequest request,
088: ActionResponse response, MultiPageModel amodel)
089: throws PortletException, IOException {
090: ApacheModel model = (ApacheModel) amodel;
091: // Make sure port is set and unused
092: if (model.getAddAjpPort() == null) {
093: return getMode() + BEFORE_ACTION; //todo: some sort of error message
094: }
095: WebManager[] managers = PortletManager.getWebManagers(request);
096: for (int i = 0; i < managers.length; i++) {
097: WebManager manager = managers[i];
098: WebConnector[] cons = (WebConnector[]) manager
099: .getConnectors();
100: for (int j = 0; j < cons.length; j++) {
101: WebConnector con = cons[j];
102: if (con.getPort() == model.getAddAjpPort().intValue()) {
103: return getMode() + BEFORE_ACTION; //todo: some sort of error message
104: }
105: }
106: }
107:
108: return BASIC_CONFIG_MODE + BEFORE_ACTION;
109: }
110: }
|