import java.io.*; import java.lang.reflect.*; import javax.servlet.ServletResponse; import net.sf.cglib.*; public class LazyLoader { public static OutputStream getOutputStream(final ServletResponse response) { MethodInterceptor mi = new MethodInterceptor() { private Object delegate; public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { if (delegate == null) delegate = response.getOutputStream(); return proxy.invoke(delegate, args); } }; return (OutputStream)Enhancer.enhance(OutputStream.class, null, mi, null, null, new ModifierFilter(Modifier.PROTECTED, 0)); } }