Getting header Connection: close, upgrade
from Client, so I am trying to change connection header from connection: close, upgrade
to connection: Upgrade
.
I modified httpfield in CustomAbstractHandler, but not working in Jetty 11 version.
CustomAbstractHandler.Java :
import java.io.IOException;
import org.eclipse.jetty.http.HttpFields;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
public class CustomAbstractHandler extends AbstractHandler {
private static final Logger LOG = LoggerFactory.getLogger(CustomAbstractHandler.class);
@Override
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
HttpFields.Mutable replacement = HttpFields.build(baseRequest.getHttpFields()).put("Connection", "Upgrade");
baseRequest.setHttpFields(replacement);
LOG.info("" + baseRequest.getHttpFields());
baseRequest.setHandled(true);
}
}
In Main Class configure Handler in server.setHandler()
import java.util.EnumSet;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.servlet.FilterHolder;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer;
import jakarta.servlet.DispatcherType;
public class WebSocketServer {
private static Server server;
public static void main(String args[]) throws Exception {
server = new Server();
server.setStopTimeout(100);
ServerConnector connector = new ServerConnector(server);
connector.setIdleTimeout(1000 * 60 * 60);
connector.setPort(56667);
connector.setAcceptedTcpNoDelay(true);
connector.setAccepting(true);
connector.join(100);
connector.setAcceptedReceiveBufferSize(1234567889);
connector.getConnectedEndPoints();
server.addConnector(connector);
ServletContextHandler contextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
contextHandler.setContextPath("/shop");
FilterHolder filterHolder = contextHandler.addFilter(websocketcreator.class, "/*",
EnumSet.of(DispatcherType.REQUEST));
filterHolder.setAsyncSupported(true);
contextHandler.getSessionHandler().setMaxInactiveInterval(5);
server.setHandler(new CustomAbstractHandler());
contextHandler.addServlet(WebSocketServerServlet.class, "/web-socket/");
JettyWebSocketServletContainerInitializer.configure(contextHandler, null);
server.setHandler(contextHandler);
server.start();
server.dump(System.err);
server.join();
}
Anything wrong from the code?