Cache constructor instance in WebAsyncUtils

Issue: SPR-10673
master
Rossen Stoyanchev 11 years ago
parent 860e56ea84
commit 9af1984b39
  1. 13
      spring-web/src/main/java/org/springframework/web/context/request/async/WebAsyncUtils.java

@ -36,6 +36,9 @@ public abstract class WebAsyncUtils {
public static final String WEB_ASYNC_MANAGER_ATTRIBUTE = WebAsyncManager.class.getName() + ".WEB_ASYNC_MANAGER";
private static Constructor<?> standardAsyncRequestConstructor;
/**
* Obtain the {@link WebAsyncManager} for the current request, or if not
* found, create and associate it with the request.
@ -80,10 +83,12 @@ public abstract class WebAsyncUtils {
private static AsyncWebRequest createStandardServletAsyncWebRequest(HttpServletRequest request, HttpServletResponse response) {
try {
String className = "org.springframework.web.context.request.async.StandardServletAsyncWebRequest";
Class<?> clazz = ClassUtils.forName(className, WebAsyncUtils.class.getClassLoader());
Constructor<?> constructor = clazz.getConstructor(HttpServletRequest.class, HttpServletResponse.class);
return (AsyncWebRequest) BeanUtils.instantiateClass(constructor, request, response);
if (standardAsyncRequestConstructor == null) {
String className = "org.springframework.web.context.request.async.StandardServletAsyncWebRequest";
Class<?> clazz = ClassUtils.forName(className, WebAsyncUtils.class.getClassLoader());
standardAsyncRequestConstructor = clazz.getConstructor(HttpServletRequest.class, HttpServletResponse.class);
}
return (AsyncWebRequest) BeanUtils.instantiateClass(standardAsyncRequestConstructor, request, response);
}
catch (Throwable t) {
throw new IllegalStateException("Failed to instantiate StandardServletAsyncWebRequest", t);

Loading…
Cancel
Save