📄 applicationcontextfacade.java
字号:
public Enumeration getServlets() {
if (System.getSecurityManager() != null) {
return (Enumeration) doPrivileged("getServlets", null);
} else {
return context.getServlets();
}
}
public Enumeration getServletNames() {
if (System.getSecurityManager() != null) {
return (Enumeration) doPrivileged("getServletNames", null);
} else {
return context.getServletNames();
}
}
public void log(String msg) {
if (System.getSecurityManager() != null) {
doPrivileged("log", new Object[]{msg} );
} else {
context.log(msg);
}
}
public void log(Exception exception, String msg) {
if (System.getSecurityManager() != null) {
doPrivileged("log", new Class[]{Exception.class, String.class},
new Object[]{exception,msg});
} else {
context.log(exception, msg);
}
}
public void log(String message, Throwable throwable) {
if (System.getSecurityManager() != null) {
doPrivileged("log", new Class[]{String.class, Throwable.class},
new Object[]{message, throwable});
} else {
context.log(message, throwable);
}
}
public String getRealPath(String path) {
if (System.getSecurityManager() != null) {
return (String) doPrivileged("getRealPath", new Object[]{path});
} else {
return context.getRealPath(path);
}
}
public String getServerInfo() {
if (System.getSecurityManager() != null) {
return (String) doPrivileged("getServerInfo", null);
} else {
return context.getServerInfo();
}
}
public String getInitParameter(String name) {
if (System.getSecurityManager() != null) {
return (String) doPrivileged("getInitParameter",
new Object[]{name});
} else {
return context.getInitParameter(name);
}
}
public Enumeration getInitParameterNames() {
if (System.getSecurityManager() != null) {
return (Enumeration) doPrivileged("getInitParameterNames", null);
} else {
return context.getInitParameterNames();
}
}
public Object getAttribute(String name) {
if (System.getSecurityManager() != null) {
return doPrivileged("getAttribute", new Object[]{name});
} else {
return context.getAttribute(name);
}
}
public Enumeration getAttributeNames() {
if (System.getSecurityManager() != null) {
return (Enumeration) doPrivileged("getAttributeNames", null);
} else {
return context.getAttributeNames();
}
}
public void setAttribute(String name, Object object) {
if (System.getSecurityManager() != null) {
doPrivileged("setAttribute", new Object[]{name,object});
} else {
context.setAttribute(name, object);
}
}
public void removeAttribute(String name) {
if (System.getSecurityManager() != null) {
doPrivileged("removeAttribute", new Object[]{name});
} else {
context.removeAttribute(name);
}
}
public String getServletContextName() {
if (System.getSecurityManager() != null) {
return (String) doPrivileged("getServletContextName", null);
} else {
return context.getServletContextName();
}
}
/**
* Use reflection to invoke the requested method. Cache the method object
* to speed up the process
* @param appContext The AppliationContext object on which the method
* will be invoked
* @param methodName The method to call.
* @param params The arguments passed to the called method.
*/
private Object doPrivileged(ApplicationContext appContext,
final String methodName,
final Object[] params) {
try{
return invokeMethod(appContext, methodName, params );
} catch (Throwable t){
throw new RuntimeException(t.getMessage());
}
}
/**
* Use reflection to invoke the requested method. Cache the method object
* to speed up the process
* will be invoked
* @param methodName The method to call.
* @param params The arguments passed to the called method.
*/
private Object doPrivileged(final String methodName, final Object[] params){
try{
return invokeMethod(context, methodName, params);
}catch(Throwable t){
throw new RuntimeException(t.getMessage());
}
}
/**
* Use reflection to invoke the requested method. Cache the method object
* to speed up the process
* @param appContext The AppliationContext object on which the method
* will be invoked
* @param methodName The method to call.
* @param params The arguments passed to the called method.
*/
private Object invokeMethod(ApplicationContext appContext,
final String methodName,
final Object[] params)
throws Throwable{
try{
Method method = (Method)objectCache.get(methodName);
if (method == null){
method = appContext.getClass()
.getMethod(methodName, (Class[])classCache.get(methodName));
objectCache.put(methodName, method);
}
return executeMethod(method,appContext,params);
} catch (Exception ex){
handleException(ex, methodName);
return null;
}
}
/**
* Use reflection to invoke the requested method. Cache the method object
* to speed up the process
* @param appContext The AppliationContext object on which the method
* will be invoked
* @param methodName The method to call.
* @param params The arguments passed to the called method.
*/
private Object doPrivileged(final String methodName,
final Class[] clazz,
final Object[] params){
try{
Method method = context.getClass()
.getMethod(methodName, (Class[])clazz);
return executeMethod(method,context,params);
} catch (Exception ex){
try{
handleException(ex, methodName);
}catch (Throwable t){
throw new RuntimeException(t.getMessage());
}
return null;
}
}
/**
* Executes the method of the specified <code>ApplicationContext</code>
* @param method The method object to be invoked.
* @param context The AppliationContext object on which the method
* will be invoked
* @param params The arguments passed to the called method.
*/
private Object executeMethod(final Method method,
final ApplicationContext context,
final Object[] params)
throws PrivilegedActionException,
IllegalAccessException,
InvocationTargetException {
if (System.getSecurityManager() != null){
return AccessController.doPrivileged(new PrivilegedExceptionAction(){
public Object run() throws IllegalAccessException, InvocationTargetException{
return method.invoke(context, params);
}
});
} else {
return method.invoke(context, params);
}
}
/**
* Throw the real exception.
* @param ex The current exception
*/
private void handleException(Exception ex, String methodName)
throws Throwable {
Throwable realException;
if (sysLog.isDebugEnabled()) {
sysLog.debug("ApplicationContextFacade." + methodName, ex);
}
if (ex instanceof PrivilegedActionException) {
ex = ((PrivilegedActionException) ex).getException();
}
if (ex instanceof InvocationTargetException) {
realException =
((InvocationTargetException) ex).getTargetException();
} else {
realException = ex;
}
throw realException;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -