Important Notice - Forums is archived
To simplify things and help our users to be more productive, we have archived the current forum and focus our efforts on helping developers on Stack Overflow. You can post new questions on Stack Overflow or join our Discord channel.

Vaadin lets you build secure, UX-first PWAs entirely in Java.
Free ebook & tutorial.
Drag and Drop Upload via StreamVariable broken in Internet Explorer?
Hi,
we have a problem when uploading files via Drag&Drop and StreamVariable in Internet Explorer.
Chrome and Firefox work fine!
Vaadin Version: 7.4.5
Server: Wildfly 8.2
When you drag some bigger files to vaadin for upload (make sure the upload takes some time) and then start to use other vaadin-components, e.g. a CheckBox, the streamingFinished method gets called, while the file is not full streamd yet.
[ 11:34:02,284 INFO [stdout] (default task-64) Streaming Finished - ContentLength: 76324232 - Bytes Received: 15204352 ]
This results in defect files......
Serverlog (dragged 5 files with a size of arround 72MB for upload - while uploading just changing the value of a ComboBox):
11:34:00,812 INFO [stdout] (default task-55) Streaming Started - ContentLength: 76324232 - Bytes Received: 0
11:34:01,250 INFO [stdout] (default task-55) Streaming Finished - ContentLength: 76324232 - Bytes Received: 76324232
11:34:01,251 INFO [stdout] (default task-57) Streaming Started - ContentLength: 76324232 - Bytes Received: 0
11:34:01,458 INFO [stdout] (default task-57) Streaming Finished - ContentLength: 76324232 - Bytes Received: 76324232
11:34:01,474 INFO [stdout] (default task-60) Streaming Started - ContentLength: 76324232 - Bytes Received: 0
11:34:01,843 INFO [stdout] (default task-60) Streaming Finished - ContentLength: 76324232 - Bytes Received: 76324232
11:34:01,861 INFO [stdout] (default task-62) Streaming Started - ContentLength: 76324232 - Bytes Received: 0
11:34:02,225 INFO [stdout] (default task-62) Streaming Finished - ContentLength: 76324232 - Bytes Received: 76324232
11:34:02,245 INFO [stdout] (default task-64) Streaming Started - ContentLength: 76324232 - Bytes Received: 0
11:34:02,284 INFO [stdout] (default task-64) Streaming Finished - ContentLength: 76324232 - Bytes Received: [b]15204352[/b]
11:34:02,287 SEVERE [com.vaadin.server.DefaultErrorHandler] (default task-64) : java.io.IOException: Eine bestehende Verbindung wurde softwaregesteuert
durch den Hostcomputer abgebrochen
at sun.nio.ch.SocketDispatcher.write0(Native Method) [jrebel-bootstrap-c2164949f71c428b8f15525463f30f3b.jar:]
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51) [jrebel-bootstrap-c2164949f71c428b8f15525463f30f3b.jar:]
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) [jrebel-bootstrap-c2164949f71c428b8f15525463f30f3b.jar:]
at sun.nio.ch.IOUtil.write(IOUtil.java:65) [jrebel-bootstrap-c2164949f71c428b8f15525463f30f3b.jar:]
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:466) [jrebel-bootstrap-c2164949f71c428b8f15525463f30f3b.jar:]
at org.xnio.nio.NioSocketConduit.write(NioSocketConduit.java:152)
at io.undertow.server.protocol.http.HttpResponseConduit.write(HttpResponseConduit.java:575) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.conduits.ChunkedStreamSinkConduit.flush(ChunkedStreamSinkConduit.java:260) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkChannel.java:162)
at io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStreamSinkChannel.java:118) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at org.xnio.channels.Channels.flushBlocking(Channels.java:63)
at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputStreamImpl.java:609) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at com.vaadin.server.communication.FileUploadHandler.sendUploadResponse(FileUploadHandler.java:684) [vaadin-server-7.4.5.jar:7.4.5]
at com.vaadin.server.communication.FileUploadHandler.doHandleXhrFilePost(FileUploadHandler.java:513) [vaadin-server-7.4.5.jar:7.4.5]
at com.vaadin.server.communication.FileUploadHandler.handleRequest(FileUploadHandler.java:291) [vaadin-server-7.4.5.jar:7.4.5]
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1408) [vaadin-server-7.4.5.jar:7.4.5]
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:350) [vaadin-server-7.4.5.jar:7.4.5]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:33) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:63) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.SessionRestoringHandler.handleRequest(SessionRestoringHandler.java:119) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.jrHandle(ServletInitialHandler.java) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at org.zeroturnaround.javarebel.integration.servlet.undertow.cbp.ServletInitialHandlerCBP.handleRequest(ServletInitialHandlerCBP.java:104) [undertow-servlet-jr-plugin-6.2.0.jar:]
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:261) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:247) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:76) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:166) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:197) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:759) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [jrebel-bootstrap-c2164949f71c428b8f15525463f30f3b.jar:1.8.0_05]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [jrebel-bootstrap-c2164949f71c428b8f15525463f30f3b.jar:1.8.0_05]
at java.lang.Thread.run(Thread.java:745) [jrebel-bootstrap-c2164949f71c428b8f15525463f30f3b.jar:1.8.0_05]
11:34:02,290 ERROR [io.undertow.request] (default task-64) UT005023: Exception handling request to /hospitools/APP/UPLOAD/0/3/rec-4/bd1c3602-abda-4725-bc06-af7c1359a0af: javax.servlet.ServletException: com.vaadin.server.ServiceException: java.io.IOException: Eine bestehende Verbindung wurde softwaregesteuert
durch den Hostcomputer abgebrochen
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:352) [vaadin-server-7.4.5.jar:7.4.5]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:33) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:63) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.SessionRestoringHandler.handleRequest(SessionRestoringHandler.java:119) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.jrHandle(ServletInitialHandler.java) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at org.zeroturnaround.javarebel.integration.servlet.undertow.cbp.ServletInitialHandlerCBP.handleRequest(ServletInitialHandlerCBP.java:104) [undertow-servlet-jr-plugin-6.2.0.jar:]
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:261) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:247) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:76) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:166) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:197) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:759) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [jrebel-bootstrap-c2164949f71c428b8f15525463f30f3b.jar:1.8.0_05]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [jrebel-bootstrap-c2164949f71c428b8f15525463f30f3b.jar:1.8.0_05]
at java.lang.Thread.run(Thread.java:745) [jrebel-bootstrap-c2164949f71c428b8f15525463f30f3b.jar:1.8.0_05]
Caused by: com.vaadin.server.ServiceException: java.io.IOException: Eine bestehende Verbindung wurde softwaregesteuert
durch den Hostcomputer abgebrochen
at com.vaadin.server.VaadinService.handleExceptionDuringRequest(VaadinService.java:1463) [vaadin-server-7.4.5.jar:7.4.5]
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1420) [vaadin-server-7.4.5.jar:7.4.5]
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:350) [vaadin-server-7.4.5.jar:7.4.5]
... 33 more
Caused by: java.io.IOException: Eine bestehende Verbindung wurde softwaregesteuert
durch den Hostcomputer abgebrochen
at sun.nio.ch.SocketDispatcher.write0(Native Method) [jrebel-bootstrap-c2164949f71c428b8f15525463f30f3b.jar:]
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:51) [jrebel-bootstrap-c2164949f71c428b8f15525463f30f3b.jar:]
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93) [jrebel-bootstrap-c2164949f71c428b8f15525463f30f3b.jar:]
at sun.nio.ch.IOUtil.write(IOUtil.java:65) [jrebel-bootstrap-c2164949f71c428b8f15525463f30f3b.jar:]
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:466) [jrebel-bootstrap-c2164949f71c428b8f15525463f30f3b.jar:]
at org.xnio.nio.NioSocketConduit.write(NioSocketConduit.java:152)
at io.undertow.server.protocol.http.HttpResponseConduit.write(HttpResponseConduit.java:575) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at io.undertow.conduits.ChunkedStreamSinkConduit.flush(ChunkedStreamSinkConduit.java:260) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkChannel.java:162)
at io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStreamSinkChannel.java:118) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
at org.xnio.channels.Channels.flushBlocking(Channels.java:63)
at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputStreamImpl.java:609) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
at com.vaadin.server.communication.FileUploadHandler.sendUploadResponse(FileUploadHandler.java:684) [vaadin-server-7.4.5.jar:7.4.5]
at com.vaadin.server.communication.FileUploadHandler.doHandleXhrFilePost(FileUploadHandler.java:513) [vaadin-server-7.4.5.jar:7.4.5]
at com.vaadin.server.communication.FileUploadHandler.handleRequest(FileUploadHandler.java:291) [vaadin-server-7.4.5.jar:7.4.5]
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1408) [vaadin-server-7.4.5.jar:7.4.5]
... 34 more
Code to reproduce:
package de.web.test;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.io.output.ByteArrayOutputStream;
import com.vaadin.event.dd.DragAndDropEvent;
import com.vaadin.event.dd.DropHandler;
import com.vaadin.event.dd.acceptcriteria.AcceptAll;
import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
import com.vaadin.server.StreamVariable;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.Component;
import com.vaadin.ui.DragAndDropWrapper;
import com.vaadin.ui.Html5File;
import com.vaadin.ui.Panel;
import com.vaadin.ui.VerticalLayout;
public class TestUploadLayout extends VerticalLayout {
private static final long serialVersionUID = 1L;
@Override
public void attach() {
super.attach();
setMargin(true);
setSpacing(true);
ComboBox comboBox = new ComboBox();
for (int i = 0; i < 10; i++) {
comboBox.addItem("Test " + i);
}
addComponent(comboBox);
Panel p = new Panel();
p.setHeight(200, Unit.PIXELS);
p.setWidth(200, Unit.PIXELS);
MyUploadPanel myUploadPanel = new MyUploadPanel(p);
addComponent(myUploadPanel);
}
class MyUploadPanel extends DragAndDropWrapper implements DropHandler{
private static final long serialVersionUID = 1L;
public MyUploadPanel(Component root) {
super(root);
setDropHandler(this);
}
@Override
public void drop(DragAndDropEvent event) {
WrapperTransferable tr = (WrapperTransferable) event.getTransferable();
Html5File files = tr.getFiles();
if (files != null) {
List<Html5File> filesToUpload = Arrays.asList(files);
filesToUpload.forEach(file -> {
file.setStreamVariable(new MyStreamVariable());
});
}
}
@Override
public AcceptCriterion getAcceptCriterion() {
return AcceptAll.get();
}
}
class MyStreamVariable implements StreamVariable{
private static final long serialVersionUID = 1L;
@Override
public OutputStream getOutputStream() {
return new ByteArrayOutputStream();
}
@Override
public boolean listenProgress() {
return false;
}
@Override
public void onProgress(StreamingProgressEvent event) {
System.out.println("Streaming OnProgress - ContentLength: " + event.getContentLength() + " - Bytes Received: " + event.getBytesReceived());
}
@Override
public void streamingStarted(StreamingStartEvent event) {
System.out.println("Streaming Started - ContentLength: " + event.getContentLength() + " - Bytes Received: " + event.getBytesReceived());
}
@Override
public void streamingFinished(StreamingEndEvent event) {
System.out.println("Streaming Finished - ContentLength: " + event.getContentLength() + " - Bytes Received: " + event.getBytesReceived());
}
@Override
public void streamingFailed(StreamingErrorEvent event) {
System.out.println("Streaming Failed - ContentLength: " + event.getContentLength() + " - Bytes Received: " + event.getBytesReceived());
}
@Override
public boolean isInterrupted() {
return false;
}
}
}
Are we doing something wrong or is this a Bug in Vaadin, the Internet Explorer or Wildfly?
Thanks for your help!
Does your case work with other browsers like Firefox or Chrome? If it does this sounds like an issue that Vaadin should tackle. Could create a bug report ticket to dev.vaadin.com about the issue? Include the sources there as well.
cheers,
matti
Hi Matti,
yes, in Firefox and Chrome everything is fine - you can interact with vaadin components without aborting the upload!
Thanks, I created an issue! https://dev.vaadin.com/ticket/18372#ticket
Best Regards,
Carsten