下面列出了javax.servlet.SingleThreadModel#org.apache.catalina.ContainerServlet 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void checkAccess(Class<?> clazz) {
if (privileged) {
return;
}
if (ContainerServlet.class.isAssignableFrom(clazz)) {
throw new SecurityException(sm.getString(
"defaultInstanceManager.restrictedContainerServlet", clazz));
}
while (clazz != null) {
if (restrictedClasses.contains(clazz.getName())) {
throw new SecurityException(sm.getString(
"defaultInstanceManager.restrictedClass", clazz));
}
clazz = clazz.getSuperclass();
}
}
/**
* @return <code>true</code> if the specified class name represents a
* container provided servlet class that should be loaded by the
* server class loader.
*
* @param classname Name of the class to be checked
*
* @deprecated Unused. Will be removed in Tomcat 9
*/
@Deprecated
protected boolean isContainerProvidedServlet(String classname) {
if (classname.startsWith("org.apache.catalina.")) {
return true;
}
try {
Class<?> clazz =
this.getClass().getClassLoader().loadClass(classname);
return (ContainerServlet.class.isAssignableFrom(clazz));
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
return false;
}
}
private void checkAccess(Class<?> clazz) {
if (privileged) {
return;
}
if (Filter.class.isAssignableFrom(clazz)) {
checkAccess(clazz, restrictedFilters);
} else if (Servlet.class.isAssignableFrom(clazz)) {
if (ContainerServlet.class.isAssignableFrom(clazz)) {
throw new SecurityException("Restricted (ContainerServlet) " +
clazz);
}
checkAccess(clazz, restrictedServlets);
} else {
checkAccess(clazz, restrictedListeners);
}
}
/**
* Return <code>true</code> if the specified class name represents a
* container provided servlet class that should be loaded by the
* server class loader.
*
* @param classname Name of the class to be checked
*/
protected boolean isContainerProvidedServlet(String classname) {
if (classname.startsWith("org.apache.catalina.")) {
return (true);
}
try {
Class<?> clazz =
this.getClass().getClassLoader().loadClass(classname);
return (ContainerServlet.class.isAssignableFrom(clazz));
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
return (false);
}
}
private void checkAccess(Class<?> clazz) {
if (privileged) {
return;
}
if (ContainerServlet.class.isAssignableFrom(clazz)) {
throw new SecurityException(sm.getString(
"defaultInstanceManager.restrictedContainerServlet", clazz));
}
while (clazz != null) {
if (restrictedClasses.contains(clazz.getName())) {
throw new SecurityException(sm.getString(
"defaultInstanceManager.restrictedClass", clazz));
}
clazz = clazz.getSuperclass();
}
}
protected Class<?> loadClass(String className, ClassLoader classLoader)
throws ClassNotFoundException {
if (className.startsWith("org.apache.catalina")) {
return containerClassLoader.loadClass(className);
}
try {
Class<?> clazz = containerClassLoader.loadClass(className);
if (ContainerServlet.class.isAssignableFrom(clazz)) {
return clazz;
}
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
}
return classLoader.loadClass(className);
}
protected Class<?> loadClass(String className, ClassLoader classLoader) throws ClassNotFoundException {
if (className.startsWith("org.apache.catalina")) {
return containerClassLoader.loadClass(className);
}
try {
Class<?> clazz = containerClassLoader.loadClass(className);
if (ContainerServlet.class.isAssignableFrom(clazz)) {
return clazz;
}
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
}
return classLoader.loadClass(className);
}
protected Class<?> loadClass(String className, ClassLoader classLoader) throws ClassNotFoundException {
if (className.startsWith("org.apache.catalina")) {
return containerClassLoader.loadClass(className);
}
try {
Class<?> clazz = containerClassLoader.loadClass(className);
if (ContainerServlet.class.isAssignableFrom(clazz)) {
return clazz;
}
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
}
return classLoader.loadClass(className);
}