In org.jivesoftware.wildfire.HttpServerManager, method removeHttpBindServlet(Context), these two lines of code cause java.lang.UnsupportedOperationExceptions:
List<ServletHolder> toAddServlets = Arrays.asList(handler.getServlets());
toAddServlets.removeAll(httpBindContexts.keySet());
Arrays.asList() creates a fixed size List, which causes the removeAll() method to fail. If replaced by a new List declaration, all is well. E.g:
List<ServletHolder> toAddServlets = new ArrayList<ServletHolder>();
for(ServletHolder servlet : handler.getServlets()) {
toAddServlets.add(servlet);
}
// List<ServletHolder> toAddServlets = Arrays.asList(handler.getServlets());
toAddServlets.removeAll(httpBindContexts.keySet());
This problem was harder to spot than usual, because the http-bind.jsp hides all exceptions: The JSP creates a Map in which it stores errors, but never outputs these errors.
Besides outputting the errors to the webpage, adding the errors to one of the logs is usefull as well: not all exceptions.getMessage() return non-empty Strings (the UnsupportedOperationExceptions described earlier didn’'t, for example).