Hi,
GWC integration on trunk is not working anymore as a result
of the mini resource/publish split changes. I want to fix this,
but I think I need some context on the how.
The issue happens when GWC calls onto WMS via the dispatcher,
as GWC is building a fake servlet enviroment in which the dispatcher works and the following exception is thrown:
at org.geowebcache.layer.wms.FakeHttpServletRequest.getRequestURI(FakeHttpServletRequest.java:112)
at org.geoserver.ows.Dispatcher.init(Dispatcher.java:293)
at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:207)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.geoserver.ows.Dispatcher.handleRequest(Dispatcher.java:50001)
at org.geowebcache.layer.wms.WMSGeoServerHelper.makeRequest(WMSGeoServerHelper.java:35)
at org.geowebcache.layer.wms.WMSSourceHelper.makeRequest(WMSSourceHelper.java:62)
at org.geowebcache.layer.wms.WMSGeoServerHelper.makeRequest(WMSGeoServerHelper.java:50001)
This happens as the dispatcher runs these lines:
// parse the request path into two components. (1) the 'path' which
// is the string after the last '/', and the 'context' which is the
// string before the last '/'
String ctxPath = request.httpRequest.getContextPath();
String reqPath = request.httpRequest.getRequestURI();
reqPath = reqPath.substring(ctxPath.length());
Now, those are used to get the context and, I guess, to decide what layers are visible eventually?
GWC FakeHttpServletRequst is throwing an exception when getContextURI()
is called, and fixing it is easy, the real question is, what is the
appropriate return value?
GWC does not have the concept of workspaces, so when a request
comes in, what happens? Should GWC build a fake request that does not
have a workspace in it? However, how that will affect the GWC ability to play with a GeoServer that actively uses workspaces for access control? Or should the GWC integration somehow mirror OWS services workspaces behavior?
Cheers
Andrea
--
Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.