Gar*_*son 7 java url embedded-jetty http-headers httpconfiguration
我们正在使用嵌入式Jetty 9.3.1.v20150714,并遇到了我们的长查询URL与其他标头相结合的问题比允许的长.
该解决方案看起来很简单:增加requestHeaderSize
在HttpConfiguration
.但是我该如何轻松地做到这一点?我正在创建一个Server
,一个ServletContextHandler
和一个ServletHolder
.但是,在一个自定义的混合HttpConfiguration
,我必须创建一个新的ServerConnector
和HttpConnectionFactory
?我是否必须覆盖HTTP和HTTPS配置?如何在requestHeaderSize
不重新配置所有默认值的情况下轻松更改?
如果您只是设置了一个属性,则可以将其设置HttpConfiguration
为默认情况下实例化的属性:
public static void main(String[] args) throws Exception {
Server server = new Server(8080);
server.setHandler(new DefaultHandler()); // 404s for everything except favicon.ico
for (Connector c : server.getConnectors()) {
c.getConnectionFactory(HttpConnectionFactory.class).getHttpConfiguration().setRequestHeaderSize(65535);
}
server.start();
server.join();
}
Run Code Online (Sandbox Code Playgroud)
您不必单独覆盖HTTPS配置,因为根据您当前实例化的描述,您没有任何HTTPS连接器.即使你确实有一个HTTPS连接器,上面的循环也可以工作,因为ServerConnector
配置的HTTPS仍然会有关联HttpConnectionFactory
.您可以在此示例中查看如何配置HTTPS连接器.
但是,自己设置必要的对象真的不是那么多代码:
public static void main(String[] args) throws Exception {
Server server = new Server();
server.setHandler(new DefaultHandler()); // 404s for everything except favicon.ico
HttpConfiguration config = new HttpConfiguration();
config.setRequestHeaderSize(65535);
ServerConnector http = new ServerConnector(server, new HttpConnectionFactory(config));
http.setPort(8080);
server.setConnectors(new Connector[] {http});
server.start();
server.join();
}
Run Code Online (Sandbox Code Playgroud)
我建议您自己进行设置,因为如果将来有其他配置更改,它将更容易维护.