Explorar o código

Merge branch 'release' into 'develop'

Release

See merge request o2oa/o2oa!1738
o2null %!s(int64=5) %!d(string=hai) anos
pai
achega
66603d3a22

+ 48 - 2
o2server/x_console/src/main/java/com/x/server/console/server/web/Proxy.java

@@ -1,11 +1,20 @@
 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);
+		}
+	}
 }

+ 0 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/snap/BaseAction.java

@@ -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;