Vaadin form malfunction due to antivirus?

I wrote a small Vaadin application consisting of a form allowing users to register for an event. The form was used successfully by around 400 users in approx 60 organizations.

However about a dozen users could not fill out part of the form. That section allowed users to choose among events (2-3 concurrent events for each of 3 successive time slots); within each event users could choose between attending in person and attending online. These choices are made using option groups; the server-side components listen to each other and make sure a user can only choose one event per time slot, and can only choose online or on site participation, not both. The problems were that those users simply could not select events; other fields in the form worked as expected. I could never reproduce the problem from our end; however I would like to try and correct it before the next event.

Users with problems tended to be from the same organizations (3 in all), so I checked their browser versions, but they were runnning the same version of IE (9) than we are. Interestingly one user said that one of his colleagues from the same location was able to complete the form using Chrome.

The only thing I could think of was that some antivirus or firewall was interfering with Ajax communication used by Vaadin, see for instance


http://stackoverflow.com/questions/2351767/long-held-ajax-connections-being-blocked-by-anti-virus


https://vaadin.com/forum/#!/thread/10497736/10512618

Unfortunately I am at a loss here and since it is quite difficult for me to go about testing this, I would like to have a more solid ground on which to base a solution.

Could anyone comment on whether the hypothetical explanation above makes sense, and/or suggest other explanations?

If it is a problem with ajax communication being held up or intercepted, would moving the validation of the event fields from the server-side to javascript code (avoiding traffic between client and server until the form is submitted) correct this?

Thanks for any help!

It’s very hard to say anything without code example at least. I don’t think that antivirus issue is still valid after almost 7 years. Do you use push notifications?
Do you deploy your application to cluster environment?
Are there errors in browser console or in vaadin debug window?

I don’t use push, no cluster, this is on tomcat 5.5 and Apache through mod_jk. The Vaadin debug window is not reporting any issues; the firebug console does not report any warnings or errors as I click on the option groups.

Here are the relevant parts of the code. The RegistrationForm class creates EventDisplays for each event and adds itself as a PropertyChangeListener; when it is notified that one EventDisplay has been selected, it unselects the other ones in the same time slot. Each EventDisplay creates two CheckBoxes and listens to their ValueChangeEvent, if one is selected then the other one is unselected.

class EventDisplay extends VerticalLayout
        implements Property.ValueChangeListener
{
    protected CheckBox attendanceOnSiteCheckBox;
    protected CheckBox attendanceViaWebexCheckBox;
    //...
    private void initDisplay(RKEvent event)
    {
        //...
        attendanceOnSiteCheckBox = new CheckBox(attendanceOnSiteLabel);
        attendanceOnSiteCheckBox.addValueChangeListener(this);
        addComponent(attendanceOnSiteCheckBox);

        attendanceViaWebexCheckBox = new CheckBox(AttendanceMode.WEBEX
            .getLabel(getLocale()));
        attendanceViaWebexCheckBox.addValueChangeListener(this);
        addComponent(attendanceViaWebexCheckBox);
    }
    //...
    @Override
    public void valueChange(Property.ValueChangeEvent event)
    {
        CheckBox source = (CheckBox) event.getProperty();
        if (attendanceOnSiteCheckBox.equals(source))
        {
            if (attendanceOnSiteCheckBox.getValue())
            {
                notifyOfSelection();
                attendanceViaWebexCheckBox.setValue(false);
            }
        } else if (attendanceViaWebexCheckBox.equals(source))
        {
            if (attendanceViaWebexCheckBox.getValue())
            {
                notifyOfSelection();
                attendanceOnSiteCheckBox.setValue(false);
            }
        }
    }
    private void notifyOfSelection()
    {
        boolean selectionState = isSelected();
        pcs.firePropertyChange("selected", !selectionState, selectionState);
    }
    public void setUnselected()
    {
        attendanceOnSiteCheckBox.setValue(Boolean.FALSE);
        attendanceViaWebexCheckBox.setValue(Boolean.FALSE);
    }
}

public class RegistrationForm extends VerticalLayout
    implements PropertyChangeListener
{
    @Override
    public void propertyChange(PropertyChangeEvent event)
    {
        EventDisplay eventDisplay = (EventDisplay) event.getSource();
        if (eventDisplay.isSelected())
        {
            int timeSlot = eventDisplay.getTimeSlot();
            for (EventDisplay otherEventDisplay :
                getOtherEventDisplaysInTimeSlot(eventDisplay.getEventId(),
                    timeSlot))
            {
                otherEventDisplay.setUnselected();
            }
        }
    }
    //...
}

What the vaadin version do you use? There were some IE-related bugs.
Is there a table or a grid on the same page?
What happens if you remove your listeners, does it help?
Try other browsers, for instance from here
https://dev.windows.com/en-us/microsoft-edge/tools/vms/windows/

Proxies, firewalls between your server and that organization?

This is using Vaadin 7.4.5. The version of IE that showed the problem is the same one that we developed / tested on, so I don’t think the browser is the culprit here (unless someone knows of settings that could be involved). There are no tables or grids in the form.

It is difficult to do extensive testing as the problems only occured in a few outside organizations, so I was hoping someone else would have had similar experiences or specific suggestions – right now I don’t even know what to ask other organizations’ techies, as I have no clue how a firewall or proxy would affect a Vaadin application. My other possibility would be, as I suggested, to see if I can move the validation logic to the client. However after discussions we decided not to go that route, as the benefits are uncertain; we can offer alternate ways to register for the few clients affected.

Thanks for your time!

Try to upgrade to latest Vaadin. There were fixes for both - communications and IE support since 7.4.

Will do. Thank you!