And is it configurable? Can I set up Tomcat so that a URL with, say, 200K of query params goes through successfully to the contained servlet?
Yes, I know one should use POST when you have lots of data; that's a less pleasant option in this particular case. The contained application (a search engine) expects a GET request to perform a search.
You can edit tomcat/conf/server.xml's HTTP/1.1 Connector entry, and add a maxHttpHeaderSize="65536" to increase from the default maximum of 8K or so, to 64K. I imagine that you could up this number as high as necessary, but 64K suffices for my needs at the moment so I haven't tried it.
The length of an HTTP GET request is not enforced by RFC2616, as Microsoft reports for its IE max length support page.
So, the maximum GET length is a client (browser) related issue. If your app is used by people you can force to use a given browser then you can simply find what is the length this browser support.
In every case I suggest a look to the Wikypedia page about those browser related issues on the Query string (the part of the request bringing parameters for server side apps, the one following the "?" eventually present in a request.
Of course maybe tomcat will put a limit too, on the server side. RFC says:
so you can easily test if Tomcat has a limit and find out what this limit is simply using different requests starting with a very long one giving the error and going down by one half. Then use bisection method to fast find the exact value.
For AJP connector, you need to adjust the
packetSize
attribute:You can change the config at Tomcat server ( ..\Tomcat 6.0\conf\server.xml )