提交 aafad914 编写于 作者: Z zhourui

fix

上级 091540e9
package com.x.server.console.server.web;
import java.io.IOException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jetty.proxy.AsyncProxyServlet;
import org.eclipse.jetty.client.api.ContentProvider;
import org.eclipse.jetty.client.api.Request;
import org.eclipse.jetty.client.api.Response;
import org.eclipse.jetty.client.util.DeferredContentProvider;
import org.eclipse.jetty.proxy.ProxyServlet;
import org.eclipse.jetty.util.Callback;
public class Proxy extends AsyncProxyServlet {
public class Proxy extends ProxyServlet {
private static final long serialVersionUID = 2737360000716631564L;
......@@ -39,4 +48,41 @@ public class Proxy extends AsyncProxyServlet {
}
return ":" + port;
}
@Override
protected ContentProvider proxyRequestContent(HttpServletRequest request, HttpServletResponse response,
Request proxyRequest) throws IOException {
ServletInputStream input = request.getInputStream();
DeferredContentProvider provider = new DeferredContentProvider();
input.setReadListener(newReadListener(request, response, proxyRequest, provider));
return provider;
}
@Override
protected void onResponseContent(HttpServletRequest request, HttpServletResponse response, Response proxyResponse,
byte[] buffer, int offset, int length, Callback callback) {
try {
if (_log.isDebugEnabled())
_log.debug("{} proxying content to downstream: {} bytes", getRequestId(request), length);
StreamWriter writeListener = (StreamWriter) request.getAttribute(WRITE_LISTENER_ATTRIBUTE);
if (writeListener == null) {
writeListener = newWriteListener(request, proxyResponse);
request.setAttribute(WRITE_LISTENER_ATTRIBUTE, writeListener);
// Set the data to write before calling setWriteListener(), because
// setWriteListener() may trigger the call to onWritePossible() on
// a different thread and we would have a race.
writeListener.data(buffer, offset, length, callback);
// Setting the WriteListener triggers an invocation to onWritePossible().
response.getOutputStream().setWriteListener(writeListener);
} else {
writeListener.data(buffer, offset, length, callback);
writeListener.onWritePossible();
}
} catch (Throwable x) {
callback.failed(x);
proxyResponse.abort(x);
}
}
}
......@@ -19,7 +19,6 @@ import com.x.base.core.project.tools.StringTools;
import com.x.processplatform.assemble.surface.Business;
import com.x.processplatform.core.entity.content.Snap;
import com.x.processplatform.core.entity.content.Snap_;
import com.x.processplatform.core.entity.content.Snap;
import com.x.processplatform.core.entity.element.Application;
import com.x.processplatform.core.entity.element.Process;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册