maxpostsize example rest file-upload wildfly large-file-upload

rest - example - Cargando error de archivos grandes a wildfly



java rest upload file example (4)

Intento subir archivos grandes (400mb +) a wildfly 8.1 y recibo una IOException pero no encuentro ninguna excepción con las mismas condiciones cuando uso el servidor jboss 7:

Excepción:

Blocking request failed HttpServerExchange{ POST /ehub/contentstore/categories/maincategory/file/create}: java.lang.RuntimeException: java.io.IOException: Broken pipe at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:527) at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:287) at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73) at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146) at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177) at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_51] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_51] at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_51] Caused by: java.io.IOException: Broken pipe at sun.nio.ch.FileDispatcherImpl.write0(Native Method) [rt.jar:1.7.0_51] at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) [rt.jar:1.7.0_51] at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) [rt.jar:1.7.0_51] at sun.nio.ch.IOUtil.write(IOUtil.java:51) [rt.jar:1.7.0_51] at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:487) [rt.jar:1.7.0_51] at org.xnio.nio.NioSocketConduit.write(NioSocketConduit.java:150) [xnio-nio-3.2.2.Final.jar:3.2.2.Final] at io.undertow.server.protocol.http.HttpResponseConduit.processWrite(HttpResponseConduit.java:212) at io.undertow.server.protocol.http.HttpResponseConduit.flush(HttpResponseConduit.java:629) at io.undertow.conduits.FinishableStreamSinkConduit.flush(FinishableStreamSinkConduit.java:83) at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkChannel.java:162) [xnio-api-3.2.2.Final.jar:3.2.2.Final] at io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStreamSinkChannel.java:100) at org.xnio.channels.Channels.flushBlocking(Channels.java:63) [xnio-api-3.2.2.Final.jar:3.2.2.Final] at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputStreamImpl.java:625) at io.undertow.servlet.spec.HttpServletResponseImpl.closeStreamAndWriter(HttpServletResponseImpl.java:451) at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:525)

Aumenté el tamaño máximo posterior pero no funcionó.

standalone.xml:

<subsystem xmlns="urn:jboss:domain:undertow:1.1"> <buffer-cache name="default"/> <server name="default-server"> <http-listener name="default" socket-binding="http" max-post-size="974247881"/> <host name="default-host" alias="localhost"> <location name="/" handler="welcome-content"/> <filter-ref name="server-header"/> <filter-ref name="x-powered-by-header"/> </host> </server> <servlet-container name="default"> <jsp-config/> </servlet-container> <handlers> <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> </handlers> <filters> <response-header name="server-header" header-name="Server" header-value="WildFly/8"/> <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/> </filters> </subsystem>


He encontrado una solución para esto. Tuve este mismo problema y lo resolví. Puede ayudar a otros.

Para permitir más tamaño de encabezado de solicitud http, necesita cambiar el archivo standalone.conf de jboss o wildfly.

Agregue el atributo max-header-size al servidor predeterminado y reinicie el servidor, funcionará Standalone.conf

<subsystem xmlns="urn:jboss:domain:undertow:1.1"> <buffer-cache name="default"/> <server name="default-server"> <http-listener name="default" socket-binding="http" max-header-size="974247881"/> <host name="default-host" alias="localhost"> <location name="/" handler="welcome-content"/> <filter-ref name="server-header"/> <filter-ref name="x-powered-by-header"/> </host> </server> ... </subsystem>


No está en el archivo "standalone.conf". Es el archivo "standalone.xml" que se encuentra en la carpeta "independiente / configuración". cambiar max-post-size:

<http-listener name="default" socket-binding="http" redirect-socket="https" max-post-size="104857600"/> <host name="default-host" alias="localhost">


Si su wildfly se encuentra detrás del servidor web, eq nginx, puede que tenga que establecer el límite allí. Esto me ayudó.