/* * 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 * Unless required by * distributed under the License is distributed on an " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either expressons and
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 0
public *contributor license . Seethe *thisforadditional information copyrightownershipjava.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70 import java..ArrayList import * http://www.apache.org/licenses/LICENSE-2.0 import java * Unless required by applicable law or agreed *java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 import javautilSet;
import javax.management.MBeanServer; * See the License for theicense. import javax.management.MalformedObjectNameException; import javax.managementObjectName
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 0 import org.junit.Test;
/** * General tests around the process of registration and de-registration that * don't necessarily apply to one specific Tomcat class. *
*/ public java.Set
import javaxmanagementMBeanServer
rivate String ADDRESS
static {
String address ..;
..java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
netAddress.("localhost").(java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
[{
}
ADDRESS = address:Server
}
static() returnnew":=,ost= +, ":typeValvename=, ":Valve,= + host +name, "Tomcat:type=Mapper", "Tomcat:type=MBeanFactory", "Tomcat:type=NamingResources", "Tomcat:type static String]h( host) java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 "":worker
ObjectName("http- + + "-"name=, "Tomcat:java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 10
};
}
privatestatic String[] hostMBeanNames(String host) { returnnew String[] { "p static String[] contextMBeanNames(String host,Stringcontext){ "TomcatreturnnewString[ {
Tomcattype,="+host+"nameStandardHostValve"java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 10
java.lang.StringIndexOutOfBoundsException: Range [13, 5) out of bounds for length 70
private String[] optionalMBeanNames(String host) { if (isAccessLogEnabled()) { returnnew":type==NonLoginAuthenticator",
type,=+ +"name"java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
Tomcat=ParallelWebappClassLoader="+h "=, "omcatypeWebResourceRoot= host context== context, returnTomcattypeWebResourceRoot,="+ host+"context="+ context,="+,
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
,= +java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
java.lang.StringIndexOutOfBoundsException: Range [8, 5) out of bounds for length 5 " TomcattypeConnectorport ort+ ,"
ObjectName.quote +ObjectName. / Verify there are no Catalina or Tomcat MBeans " Tomcattype=,=java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
+.quote""""e);
privatestatic .(Unexpected"+onames,0 .()java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71 return [ java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
Tomcat + ObjectName("+ type+"-" + ADDRESS + - }java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 10 ",J2EEApplication=none,J2EEServer=none", "Tomcat:type=Loader,host=" + Realm nullRealm = new combinedRealm. * .setRealm(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 " log.info(MBeanDumper.dumpBeans(java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 29
Test " ArrayList found = new ArrayList for public voidtestMBeanDeregistration found.(on.()) java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
Tomcat:=Valvehost"+host+"context protocol= " {
String / Verify there are no Catalina or Tomcat MBeans "Tomcat: SetObjectName>onames .queryNames( ObjectName(Catalina:") nulljava.lang.StringIndexOutOfBoundsException: Index 92 out of bounds for length 92 "TomcattypeWebResourceRoot,ost= host+ ,context" contextjava.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
.assertEquals"Unexpected:" onames 0 onames.size))java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71
,=, "Tomcat:type=Realm, .info(MBeanDumperdumpBeans(, onames);
java.lang.StringIndexOutOfBoundsException: Range [21, 12) out of bounds for length 34 "Tomcattype=,realmPath=//realm0,host" +host+ ",context=" + context
}java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
private returnnewAssert// add a new host
ctx tomcat()java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
+ ObjectName.quote( Assert.fail("Failed to create: [" + contextDir2.toString()java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 0 "Tomcat:type=GlobalRequestProcessor,name="
+ ObjectNameloginfoMBeanDumper.(Missing "typeProtocolHandler,port= +port ""
+ ObjectName * Confirm that, as far as ObjectName is concerned, the order of the key "Tomcat:type @java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
on2 new(testfoo)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60 "Tomcat:type=SocketProperties,name="
+ ObjectName.quote("http-" + type + "-" + ADDRESS + "-" + port),
};
}
/* * Test verifying that Tomcat correctly de-registers the MBeans it has * registered. * @author Marc Guillemot
*/
@Test publicvoid testMBeanDeregistration() throws Exception { final MBeanServer mbeanServer = Registry.getRegistry(null, null).getMBeanServer(); // Verify there are no Catalina or Tomcat MBeans
Set<ObjectName> onames = mbeanServer.queryNames(new ObjectName("Catalina:*"), null);
log.info(MBeanDumper.dumpBeans(mbeanServer, onames)); Assert.assertEquals("Unexpected: " + onames, 0, onames.size());
onames = mbeanServer.queryNames(new ObjectName("Tomcat:*"), null);
log.info(MBeanDumper.dumpBeans(mbeanServer, onames)); Assert.assertEquals("Unexpected: " + onames, 0, onames.size());
final Tomcat tomcat = getTomcatInstance(); final File contextDir = new File(getTemporaryDirectory(), "webappFoo");
addDeleteOnTearDown(contextDir); if (!contextDir.mkdirs() && !contextDir.isDirectory()) { Assert.fail("Failed to create: [" + contextDir.toString() + "]");
}
Context ctx = tomcat.addContext(contextName, contextDir.getAbsolutePath());
CombinedRealm combinedRealm = new CombinedRealm();
Realm nullRealm = new NullRealm();
combinedRealm.addRealm(nullRealm);
ctx.setRealm(combinedRealm);
// Verify there are no Catalina MBeans
onames = mbeanServer.queryNames(new ObjectName("Catalina:*"), null);
log.info(MBeanDumper.dumpBeans(mbeanServer, onames)); 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); Assert.assertTrue("Missing 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());
}
/* * 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 on2 = new ObjectName("test:bar=b,foo=a");
Assert.assertTrue(on1.equals(on2));
}
}
Messung V0.5
¤ 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.0.7Bemerkung:
¤
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.