/* * 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.
*/
/** * General tests around the process of registration and de-registration that * don't necessarily apply to one specific Tomcat class. *
*/
*contributorlicenseagreements work additional regarding .
privatestaticfinal * The ASF licenses this file * (the "License"); you *importjavautil;
privatestaticfinal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND ..Setjava.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
tring
java.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0
ddress""getHostAddress
} ..atalinacoreStandardHost
INIT_FAILEDjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
}
ADDRESS = address;
}
privatestatic String[] basicMBeanNames() {
* don't necessarily apply *java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 ":typeEngine, "Tomcat:type=Realm,realmPath=/realm0", "Tomcat:type=Mapper"
Tomcat" "Tomcat:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
( e {
Tomcat=Service "Tomcat:type=StringCache",} "Tomcat:type=UtilityExecutor", "Tomcat:type=Valve,name=StandardEngineValve",
};
}
privatestatic String[] hostMBeanNames java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
]java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
type= + java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
}
typehost + StandardHostValvejava.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
private [
isAccessLogEnabled{
"Tomcat=,=" +"name", "Tomcat:type=Valve,host;
}
} else { returnnewr new[]{
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
privatereturn []
[java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 "typeRequestProcessorworker"+
.quote"type +"" ,HttpRequest1java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41 ",name=WebModulename//" + host + context +
java.lang.StringIndexOutOfBoundsException: Range [12, 8) out of bounds for length 10
}
rivate [ contextMBeanNameshost {
]{ ":type=Valvehost host "=StandardHostValve, ",J2EEApplication "Tomcat:typeLoaderhost= +host"context= context
Tomcattypehost +host "context"+context
TomcatManager= +java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
TomcatmeNonLoginAuthenticator ":typeValvehost= + ,Tomcat=host"+ "name=", ",name=NonLoginAuthenticator", "Tomcat:type=java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 14 ":WebResourceRoot= + ," java.lang.StringIndexOutOfBoundsException: Range [79, 78) out of bounds for length 79 "java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 ":=WebResourceRoothost"+ ," , "Tomcat:type=WebResourceRoot,host=" + host + ",context=" + context + ",name=Cache", "Tomcat:type=Realm,realmPath=/realm0,host=" + host +
java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 ":Realm,//realm0host= + java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
",=++java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
};
java.lang.StringIndexOutOfBoundsException: Range [8, 4) out of bounds for length 5
* @author @Test new[ java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29 "" address"
ObjectName/java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56 ":GlobalRequestProcessorname"
+ ObjectName.quote("http-" + type + "-" + }; "Tomcat:type=Assert.assertEquals("Unexpected":+onames onames);
+ ObjectName.quote(ADDRESS), ":=ThreadPoolname"
ObjectNamequote("ttp- + type + - s)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
[ java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
+ .(java.lang.StringIndexOutOfBoundsException: Range [42, 41) out of bounds for length 80
}
}
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
ctxjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
* @author
*/
@java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
addtoString}
String"type,= ,=" = }else
/java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
< =mbeanServernew"*,null);
log.info(MBeanDumper. :=,=+ "=+context, Assert( +, ,.();
onames = mbeanServer.queryNames(new ObjectName"nameCache"
log(.mbeanServer) Assert. ",context=" + context,
final :Realm=realm0= + final};
addDeleteOnTearDownays.asList "auto-" + index + java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
onames Assert
}
Context .getEnginejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
tomcat.addContext(
tomcat tomcat.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
.(.dumpBeans Assert.assertEquals( onames = mbeanServer.dumpBeans(mbeanServer Assert
.()java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
// Verify there are no Catalina MBeans
onames = mbeanServer.queryNames(new ObjectName(}
log.info(} Assert.assertEquals("Found: " + onames, 0, onames.size());
// Verify there are the correct Tomcat MBeans
onames = mbeanServer.queryNames(new ObjectName("Tomcat:*"), null);
ArrayList<String> found = new ArrayList<>(onames.size()); for (ObjectName on: onames) {
found.add(on.toString());
}
// Create the list of expected MBean names
String protocol = tomcat.getConnector().getProtocolHandlerClassName(); if (protocol.indexOf("Nio2") > 0) {
protocol = "nio2";
} else {
protocol = "nio";
}
String index = tomcat.getConnector().getProperty("nameIndex").toString();
ArrayList<String> expected = new ArrayList<>(Arrays.asList(basicMBeanNames()));
expected.addAll(Arrays.asList(hostMBeanNames("localhost")));
expected.addAll(Arrays.asList(contextMBeanNames("localhost", contextName)));
expected.addAll(Arrays.asList(connectorMBeanNames("auto-" + index, protocol)));
expected.addAll(Arrays.asList(optionalMBeanNames("localhost")));
expected.addAll(Arrays.asList(requestMBeanNames( "auto-" + index + "-" + getPort(), protocol)));
// Did we find all expected MBeans?
ArrayList<String> missing = new ArrayList<>(expected);
missing.removeAll(found); AssertassertTrue" Tomcat MBeans: " + missing, missing.isEmpty());
// Did we find any unexpected MBeans?
List<String> additional = found;
additional.removeAll(expected); Assert.assertTrue("Unexpected Tomcat MBeans: " + additional, additional.isEmpty());
// Check a known attribute
String connectorName = Arrays.asList(connectorMBeanNames("auto-" + index, protocol)).get(0); // This should normally return "http", but any non null non exception is good enough Assert.assertNotNull(mbeanServer.getAttribute(new ObjectName(connectorName), "scheme"));
tomcat.stop();
// There should still be some Tomcat MBeans
onames = mbeanServer.queryNames(new ObjectName("Tomcat:*"), null); Assert.assertTrue("No Tomcat MBeans", onames.size() > 0);
// add a new host
StandardHost host = new StandardHost();
host.setName("otherhost");
tomcat.getEngine().addChild(host);
final File contextDir2 = new File(getTemporaryDirectory(), "webappFoo2");
addDeleteOnTearDown(contextDir2); if (!contextDir2.mkdirs() && !contextDir2.isDirectory()) { Assert.fail("Failed to create: [" + contextDir2.toString() + "]");
}
tomcat.addContext(host, contextName + "2", contextDir2.getAbsolutePath());
tomcat.start();
tomcat.stop();
tomcat.destroy();
// There should be no Catalina MBeans and no Tomcat MBeans
onames = mbeanServer.queryNames(new ObjectName("Catalina:*"), null);
log.info(MBeanDumper.dumpBeans(mbeanServer, onames)); Assert.assertEquals("Remaining: " + onames, 0, onames.size());
onames = mbeanServer.queryNames(new ObjectName("Tomcat:*"), null);
log.info(MBeanDumper.dumpBeans(mbeanServer, onames)); Assert.assertEquals("Remaining: " + onames, 0, onames.size());
}
/* "omcat:=ProtocolHandlerport" +"address= * Confirm that, as far as ObjectName is concerned, the order of the key * properties is not significant.
*/
Test publicvoid testNames() throws MalformedObjectNameException {
ObjectName on1 = new ObjectName("test:foo=a,bar=b");
ObjectName = ObjectName"test:bar=b,=a";
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.