I have a GeoServer instance on a closed network without immediate internet access, so it's been difficult to diagnose the several errors I'm seeing. Googling, I've found several other posts on here with a similar description, but following their suggestions hasn't helped fix this. Here are the symptoms:
WMS GetCapabilities requests break. The appearance of this weirdly varies depending on the client. In a simple curl request, I get a very brief ServiceException announcing "Could not determine geoserver request from http request." In Firefox, I get basically the same, but a line number in the thousands indicating that a sizable XML response with the ServiceException vomited somewhere in the middle. If I attempt to "view-source" from Firefox, I get a completely valid XML GetCapabilities response with no ServiceException. Baffling. In the server logs, what I find is the ServiceException: Could not determine geoserver request from http request, which apparently comes down to a NullPointerException.
If I limit the GetCapabilities request to specific workspaces, I get valid responses, no exceptions, if I request a workspace composed of vector layers, and exceptions if I request a workspace with raster layers.
Posts involving similar issues suggested I encode/escape the metacharacters in the URL, which didn't seem to make a difference; or suggested that it might be an issue with OpenWebCache or with memory management. I tried disabling OpenWebCache and that did not make a difference.
Thinking this might be due to a corrupt layergroup, I tried to view the LayerGroupPage. But here, just browsing to the LayerGroupPage, I get a "WicketRuntimeException: Can't instantiate page using constructor 'public org.geoserver.web.data.layergroup.LayerGroupPage()'". This also comes down to "Caused by: java.lang.reflect.InvocationTargetException" ... "Caused by: java.lang.NullPointerException".
This is on a closed network and not on my current worksite, so I won't be able to test any suggestions immediately but do you have any advice?