/** * Classes to integrate GWC service requests with the GeoServer {@link org.geoserver.ows.Dispatcher} framework. * <p> * How the GWC service request processing is modified to engage into the {@link org.geoserver.ows.Dispatcher} * life cycle: * <ul> * <li>The mapping of incoming requests to {@code /gwc/service/*} to the GWC dispatcher is commented out in * {@code geowebcache-servlet.xml}. * <li>An instance of {@link org.geoserver.ows.OWSHandlerMapping} in {@code geowebcache-geoserver-context.xml} * redirects all requests to {@code /gwc/service/*} to the GeoSever {@link org.geoserver.ows.Dispatcher} instead * of the regular GWC dispatcher. * <li>A GeoServer OWS Service descriptor is configured in {@code geowebcache-geoserver-context.xml} as a * {@link org.geoserver.platform.Service} called {@code "gwc"}, that defines a {@code "dispatch"} operation and * that references the {@link org.geoserver.gwc.dispatch.GwcServiceProxy} as the actual service bean that perfors * that operation. * <li>A {@link org.geoserver.ows.DispatcherCallback} of type {@link org.geoserver.gwc.dispatch.GwcServiceDispatcherCallback} * intercepts OWS service requests and if they're directed to one of the GWC provided services, initializes * the {@link org.geoserver.ows.Request} object with "gwc" as the request service and "dispatch" as the request * operation; with this information, the {@link org.geoserver.ows.Dispatcher} will find out the "mediator" * {@link org.geoserver.gwc.dispatch.GwcServiceProxy} and call it's {@code dispatch} method. * <li> The {@link org.geoserver.gwc.dispatch.GwcServiceProxy#dispatch dispatch} method in turn redirects the request * to the {@link org.geowebcache.GeoWebCacheDispatcher} and returns a payload {@link org.geoserver.gwc.dispatch.GwcOperationProxy} * object; the {@code Dispatcher} finds out it's to be handled * by the configured {@link org.geoserver.ows.Response} object of type {@link org.geoserver.gwc.dispatch.GwcResponseProxy}. * </ul> */ package org.geoserver.gwc.dispatch;