I’ve got some questions regarding GeoServer’s GWC capabilities. Perhaps if I describe my desired behavior first, what I’m attempting to implement will make more sense.
We would like to stand up an “application local” WMS to serve client-side applications specific to this particular program. The client side is coded using NASA’s WorldWind Java client. Therefore, the client-side applications will connect directly to the “application local” WMS server to fetch GIS data for visualization. I’ll call this particular server GeoServer A (or GSA).
I’d like to make use of the WMS Cascading capabilities in GeoServer to reach out to other external WMS servers to pull in their data. To demonstrate this point, I implemented a NASA WorldWind WMS on my computer (we’ll call this NWMS) serving up NASA Blue Marble Next Generation. I added new WMS Store to GSA, pointing it to the GetCapabilities URL of NWMS and it discovered the layers as expected. After publishing the layer, I was able to successfully point the WorldWind client to GSA rather than NWMS and it all worked as expected.
So now, I’ve created a virtual machine and installed another instance of GeoServer (we’ll call this GSB). Again, I created a new WMS data store on GSA pointing it to GSB and selected a rather trivial custom layer I added to GSB. And again, this all works as expected.
So now the caching. One of the things our program would like to be able to do is point to an external GIS data source and locally cache the data such that if we have network connectivity problems to the external source, the client applications can still access the data from the “application local” WMS (e.g. GSA in my case). To demonstrate this, on GSA, went to the “Caching Defaults” page and enabled “direct integration with GeoServer WMS”. I’ve also enabled tile caching on the layers I’m experimenting with on GSA. Again, these layers are from the remote WMS data stores. Under “Tile Layers”, I selected the “Seed/Truncate” link next to the layer and forced a “Re-seed” of the layer. I watched the command line interfaces for both GSA, GSB, and NWMS busily exchange information and confirmed on the file system that GSA is building these cache pyramids.
So now my thinking is, I should be able to turn off NWMS and GSB since GSA has locally cached the data. However, when I connect to GSA from my WorldWind client, I see errors in the command line corresponding to GSA saying it can’t connect to the remote servers. I thought all of this stuff was locally cached?
Furthermore, even with the backend servers (NWMS and GSB) up and running, when I use the curl tool, I see lines like the following for the custom GWC HTTP headers:
geowebcache-miss-reason: request does not align to grid(s) ‘EPSG;4326’ ‘My_EPSG:4326’
geowebcache-cache-result: MISS
I’m rather confident that the HTTP query parameters align well with the layers I have cached. That is, I know I am:
-
Specifying the correct layer(s)
-
Specifying the correct height and width corresponding to the layer’s gridset(s)
-
Specifying the correct SRS/CRS (e.g. EPSG:4326) corresponding to the layer’s gridset(s)
-
Specifying the correct image format (PNG)
-
Specifying BBOX coordinates that are within the extend of the layer’s bounds
Is there anything else I’m doing wrong? Or is this whole WMS Cascading thing with GeoWebCache and cache layers not possible with GeoServer?
v/r
Ben
//SIGNED//
Benjamin Watson
MITRE Corporation
USSTRATCOM/J864
(402) 294-8119
DSN 271-8119
NIPR: watsonb@anonymised.com
SIPR: watsonb@anonymised.com
MITRE: bwatson@anonymised.com