diff options
author | 2015-11-30 02:41:33 -0500 | |
---|---|---|
committer | 2015-11-30 02:43:36 -0500 | |
commit | 9401f816dd0d9d550fe98a8507224bde51c4b847 (patch) | |
tree | 94f2d7a7893a787bafdca8b5ef063ea316938874 /rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusUpdateTask.java | |
parent | e8ec7aa8e38a93f5b034ac74cebce5de23710317 (diff) |
upload tomcat
JIRA: BOTTLENECK-7
Change-Id: I875d474869efd76ca203c30b60ebc0c3ee606d0e
Signed-off-by: hongbotian <hongbo.tianhongbo@huawei.com>
Diffstat (limited to 'rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusUpdateTask.java')
-rw-r--r-- | rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusUpdateTask.java | 529 |
1 files changed, 529 insertions, 0 deletions
diff --git a/rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusUpdateTask.java b/rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusUpdateTask.java new file mode 100644 index 00000000..d43c6c9d --- /dev/null +++ b/rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusUpdateTask.java @@ -0,0 +1,529 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.jk.status; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + +import org.apache.catalina.ant.AbstractCatalinaTask; +import org.apache.tools.ant.BuildException; + +/** + * Ant task that implements the <code>/status</code> command, supported by the + * mod_jk status (1.2.13) application. + * + * + * @author Peter Rossbach + * @version $Revision: 611693 $ + * @since 5.5.10 + * @deprecated + */ +public class JkStatusUpdateTask extends AbstractCatalinaTask { + + /** + * The descriptive information about this implementation. + */ + private static final String info = "org.apache.jk.status.JkStatusUpdateTask/1.1"; + + private String worker = "lb"; + + private String workerType = "lb"; + + private int internalid = 0; + + private Integer lbRetries; + + private Integer lbRecovertime; + + private Boolean lbStickySession = Boolean.TRUE; + + private Boolean lbForceSession = Boolean.FALSE; + + private Integer workerLoadFactor; + + private String workerJvmRoute ; + + private int workerDistance = -1; + + private String workerRedirect; + + private String workerClusterDomain; + + private Boolean workerDisabled ; + + private Boolean workerStopped ; + + private int workerActivation = -1; + + private boolean isLBMode = true; + + + + private String workerLb; + + /** + * Return descriptive information about this implementation and the + * corresponding version number, in the format + * <code><description>/<version></code>. + */ + public String getInfo() { + + return (info); + + } + + /** + * + */ + public JkStatusUpdateTask() { + super(); + setUrl("http://localhost/jkstatus"); + } + + /** + * @return Returns the workerDistance. + */ + public int getWorkerDistance() { + return workerDistance; + } + + /** + * @param workerDistance The workerDistance to set. + */ + public void setWorkerDistance(int workerDistance) { + this.workerDistance = workerDistance; + } + + /** + * @return Returns the workerJvmRoute. + */ + public String getWorkerJvmRoute() { + return workerJvmRoute; + } + + /** + * @param workerJvmRoute The workerJvmRoute to set. + */ + public void setWorkerJvmRoute(String workerJvmRoute) { + this.workerJvmRoute = workerJvmRoute; + } + + /** + * @return Returns the internalid. + */ + public int getInternalid() { + return internalid; + } + + /** + * @param internalid + * The internalid to set. + */ + public void setInternalid(int internalid) { + this.internalid = internalid; + } + + /** + * @return Returns the lbForceSession. + */ + public Boolean getLbForceSession() { + return lbForceSession; + } + + /** + * @param lbForceSession + * The lbForceSession to set. + */ + public void setLbForceSession(Boolean lbForceSession) { + this.lbForceSession = lbForceSession; + } + + /** + * @return Returns the lbRecovertime. + */ + public Integer getLbRecovertime() { + return lbRecovertime; + } + + /** + * @param lbRecovertime + * The lbRecovertime to set. + */ + public void setLbRecovertime(Integer lbRecovertime) { + this.lbRecovertime = lbRecovertime; + } + + /** + * @return Returns the lbRetries. + */ + public Integer getLbRetries() { + return lbRetries; + } + + /** + * @param lbRetries + * The lbRetries to set. + */ + public void setLbRetries(Integer lbRetries) { + this.lbRetries = lbRetries; + } + + /** + * @return Returns the lbStickySession. + */ + public Boolean getLbStickySession() { + return lbStickySession; + } + + /** + * @param lbStickySession + * The lbStickySession to set. + */ + public void setLbStickySession(Boolean lbStickySession) { + this.lbStickySession = lbStickySession; + } + + /** + * @return Returns the worker. + */ + public String getWorker() { + return worker; + } + + /** + * @param worker + * The worker to set. + */ + public void setWorker(String worker) { + this.worker = worker; + } + + /** + * @return Returns the workerType. + */ + public String getWorkerType() { + return workerType; + } + + /** + * @param workerType + * The workerType to set. + */ + public void setWorkerType(String workerType) { + this.workerType = workerType; + } + + /** + * @return Returns the workerLb. + */ + public String getWorkerLb() { + return workerLb; + } + + /** + * @param workerLb + * The workerLb to set. + */ + public void setWorkerLb(String workerLb) { + this.workerLb = workerLb; + } + + /** + * @return Returns the workerClusterDomain. + */ + public String getWorkerClusterDomain() { + return workerClusterDomain; + } + + /** + * @param workerClusterDomain + * The workerClusterDomain to set. + */ + public void setWorkerClusterDomain(String workerClusterDomain) { + this.workerClusterDomain = workerClusterDomain; + } + + /** + * @return Returns the workerDisabled. + */ + public Boolean getWorkerDisabled() { + return workerDisabled; + } + + /** + * @param workerDisabled + * The workerDisabled to set. + */ + public void setWorkerDisabled(Boolean workerDisabled) { + this.workerDisabled = workerDisabled; + } + + /** + * @return Returns the workerActivation. + */ + public int getWorkerActivation() { + return workerActivation; + } + + /** + * <ul> + * <li>0 active</li> + * <li>1 disabled</li> + * <li>2 stopped</li> + * </ul> + * @param workerActivation The workerActivation to set. + * + */ + public void setWorkerActivation(int workerActivation) { + this.workerActivation = workerActivation; + } + + /** + * @return Returns the workerStopped. + */ + public Boolean getWorkerStopped() { + return workerStopped; + } + + /** + * @param workerStopped The workerStopped to set. + */ + public void setWorkerStopped(Boolean workerStopped) { + this.workerStopped = workerStopped; + } + + /** + * @return Returns the workerLoadFactor. + */ + public Integer getWorkerLoadFactor() { + return workerLoadFactor; + } + + /** + * @param workerLoadFactor + * The workerLoadFactor to set. + */ + public void setWorkerLoadFactor(Integer workerLoadFactor) { + this.workerLoadFactor = workerLoadFactor; + } + + /** + * @return Returns the workerRedirect. + */ + public String getWorkerRedirect() { + return workerRedirect; + } + + /** + * @param workerRedirect + * The workerRedirect to set. + */ + public void setWorkerRedirect(String workerRedirect) { + this.workerRedirect = workerRedirect; + } + + /** + * Execute the requested operation. + * + * @exception BuildException + * if an error occurs + */ + public void execute() throws BuildException { + + super.execute(); + checkParameter(); + StringBuffer sb = createLink(); + execute(sb.toString(), null, null, -1); + + } + + /** + * Create JkStatus link + * <ul> + * <li><b>load balance example: + * </b>http://localhost/jkstatus?cmd=update&mime=txt&w=lb&vlf=false&vls=true</li> + * <li><b>worker example: + * </b>http://localhost/jkstatus?cmd=update&mime=txt&w=lb&sw=node1&vwn=node01&vwf=1&vwa=2&vwx=0 + * <br/> + * <ul> + * <li>vwa=0 active</li> + * <li>vwa=1 disabled</li> + * <li>vwa=2 stopped</li> + * </ul> + * </li> + * </ul> + * + * <br/>Loadbalacing parameter: + * <br/> + * <ul> + * <li><b>w:<b/> name lb worker</li> + * <li><b>vlr:<b/> Number of Retries</li> + * <li><b>vlt:<b/> recover wait time</li> + * <li><b>vlf:<b/> Force Sticky Session</li> + * <li><b>vls:<b/> Sticky session</li> + * </ul> + * + * <br/>Tcp worker parameter: + * <br/> + * <ul> + * <li><b>w:<b/> name worker</li> + * <li><b>sw:<b/> name lb sub worker</li> + * <li><b>vwf:<b/> load factor</li> + * <li><b>vwn:<b/> jvm route</li> + * <li><b>vwx:<b/> distance</li> + * <li><b>vwa:<b/> activation state</li> + * <li><b>vwr:<b/> redirect route</li> + * <li><b>vwd:<b/> cluster domain</li> + * <li><b>ws:<b/> stopped deprecated 1.2.16</li> + * <li><b>wd:<b/> disabled deprecated 1.2.16</li> + * </ul> + * + * @return create jkstatus link + */ + private StringBuffer createLink() { + // Building URL + StringBuffer sb = new StringBuffer(); + try { + sb.append("?cmd=update&mime=txt"); + sb.append("&w="); + + if (isLBMode) { + sb.append(URLEncoder.encode(worker, getCharset())); + //http://localhost/jkstatus?cmd=update&mime=txt&w=lb&vlf=false&vls=true + if ((lbRetries != null)) { // > 0 + sb.append("&vlr="); + sb.append(lbRetries); + } + if ((lbRecovertime != null)) { // > 59 + sb.append("&vlt="); + sb.append(lbRecovertime); + } + if ((lbStickySession != null)) { + sb.append("&vls="); + sb.append(lbStickySession); + } + if ((lbForceSession != null)) { + sb.append("&vlf="); + sb.append(lbForceSession); + } + } else { + //http://localhost/status?cmd=update&mime=txt&sw=node1&w=lb&vwf=1&wd=false&ws=false + if (workerLb != null) { // must be configured + sb.append(URLEncoder.encode(workerLb, getCharset())); + } + sb.append("&sw="); + sb.append(URLEncoder.encode(worker, getCharset())); + if (workerLoadFactor != null) { // >= 1 + sb.append("&vwf="); + sb.append(workerLoadFactor); + } + if (workerJvmRoute != null) { + sb.append("&vwn="); + sb.append(URLEncoder.encode(workerJvmRoute, getCharset())); + } + if (workerDisabled != null) { + sb.append("&vwd="); + sb.append(workerDisabled); + } + if (workerStopped != null) { + sb.append("&vws="); + sb.append(workerStopped); + } + if (workerActivation >= 0 && workerActivation < 3) { + sb.append("&vwa="); + sb.append(workerActivation); + } + if (workerDistance >= 0) { + sb.append("&vwx="); + sb.append(workerDistance); + } + if (workerRedirect != null) { // other worker conrecte lb's + sb.append("&vwr="); + sb.append(URLEncoder.encode(workerRedirect, + getCharset())); + } + if (workerClusterDomain != null) { + sb.append("&vwc="); + sb.append(URLEncoder.encode(workerClusterDomain, + getCharset())); + } + } + + } catch (UnsupportedEncodingException e) { + throw new BuildException("Invalid 'charset' attribute: " + + getCharset()); + } + return sb; + } + + /** + * check correct lb and worker pararmeter + */ + protected void checkParameter() { + if (worker == null) { + throw new BuildException("Must specify 'worker' attribute"); + } + if (workerType == null) { + throw new BuildException("Must specify 'workerType' attribute"); + } + if ("lb".equals(workerType)) { + if (lbRecovertime == null && lbRetries == null) { + throw new BuildException( + "Must specify at a lb worker either 'lbRecovertime' or" + + "'lbRetries' attribute"); + } + if (lbStickySession == null || lbForceSession == null) { + throw new BuildException("Must specify at a lb worker either" + + "'lbStickySession' and 'lbForceSession' attribute"); + } + if (null != lbRecovertime && 60 < lbRecovertime.intValue()) { + throw new BuildException( + "The 'lbRecovertime' must be greater than 59"); + } + if (null != lbRetries && 1 < lbRetries.intValue()) { + throw new BuildException( + "The 'lbRetries' must be greater than 1"); + } + isLBMode = true; + } else if ("worker".equals(workerType)) { + if (workerLoadFactor == null ) { + throw new BuildException( + "Must specify at a node worker 'workerLoadFactor' attribute"); + } + if (workerClusterDomain == null) { + throw new BuildException( + "Must specify at a node worker 'workerClusterDomain' attribute"); + } + if (workerRedirect == null) { + throw new BuildException( + "Must specify at a node worker 'workerRedirect' attribute"); + } + if (workerLb == null) { + throw new BuildException("Must specify 'workerLb' attribute"); + } + if (workerLoadFactor.intValue() < 1) { + throw new BuildException( + "The 'workerLoadFactor' must be greater or equal 1"); + } + isLBMode = false; + } else { + throw new BuildException( + "Only 'lb' and 'worker' supported as workerType attribute"); + } + } +} |