This takes over a thread on the GeoServer-Users list re: setting up an IIS
Proxy to allow an OpenLayers app to access IIS:80 and GeoServer:8080
“cross-domain”
(http://sourceforge.net/mailarchive/forum.php?thread_name=004001cb528b%2428478a60%2478d69f20%24%40ca&forum_name=geoserver-users).

This article and “product”
http://www.codeproject.com/KB/web-security/HTTPReverseProxy.aspx provided a
pretty workable solution for reading from WFS.GeoServer:8080 within a IIS:80
app. It lets me create an IIS webapp <root>/ows which points at my
<geoserver>:8080/ows endpoint. I can successfully communicate to
http://smartmonkeys.ca/ows/ for WFS/WMS etc. 

It works great for reading features, but I’m having some issues committing
to my feature stores, which I think might be due to the way that the proxy
has me configuring my layer:

var vlayer = new OpenLayers.Layer.Vector(
"vector test", {
strategies: [new OpenLayers.Strategy.Fixed(), saveStrategy],
protocol: new OpenLayers.Protocol.WFS({ 
url:
"/ows?service=wfs&version=1.1.0&request=getFeature&typeName=Water_Points",
service: "wfs",
version: "1.1.0",
request: "getFeature",
featureType: "Water_Points",
featureNS: "http://smartmonkeys.ca:8080/geoserver/";,
srsName: "EPSG:4326"})
});

I basically have to put all of the request parameters into the protocol URL
or else I don’t get anything back. If any of the parameters are left out,
Fiddler whines about the missing service, request, and typeName parameters
(respectively) until I include them in the URL. Furthermore, I have to leave
all of these parameters (plus the others) in as individual options as well. 

When I go to commit DELETES, EDITS and UPDATES through my saveStrategy
nothing happens to individual features – Fiddler shows me getting the entire
set back, untouched, as a response.

Code behind the Save control follows. Yes, it’s GeoExt, but the core bits
are OpenLayers. Any pointers would be grately appreciated.

The whole :8080/:80 issue is stumping a lot of people in the
GeoServer/GeoExt/OpenLayers world, I’ll happily contribute what I can back
to each of the lists collectively.

SFS

// ==================================== 
                // Main Panel 
                // ==================================== 

                // map 
                
                var drawControl = new OpenLayers.Control.DrawFeature(vlayer,
OpenLayers.Handler.Point, {handlerOptions: {multi: false}}); 
                var modifyControl = new
OpenLayers.Control.ModifyFeature(vlayer); 
                                
                var mapPanel = new GeoExt.MapPanel({ 
                                region: 'center', 
                                map: map, 
                                bbar: [ 
                                                new GeoExt.Action({control:
drawControl, text: "New", enableToggle: true}), 
                                                {text: "Delete", handler:
function() {
gridPanel_SEKID_Water_Points.getSelectionModel().each(function(rec) { var
feature = rec.get("feature"); modifyControl.unselectFeature(feature);
store.remove(rec); if (feature.state !== OpenLayers.State.INSERT)
{feature.state = OpenLayers.State.DELETE; layer.addFeatures([feature]);} })
} }, 
                                                "->", 
                                                { text: "Save", handler:
function() {fStore_SEKID_Water_Points.commitChanges(); saveStrategy.save();}
} 
                                ] 
                }); 
                                
                mapPanel.map.addControl(drawControl); 
                mapPanel.map.addControl(modifyControl); 
                modifyControl.activate(); 
                
                // feature stores and grids 

                var fStore_SEKID_Water_Points = new
GeoExt.data.FeatureStore({ 
                    fields: [ 
                                {name: "Entity", type: "string"}, 
                                {name: "Handle", type: "string"}, 
                                {name: "Layer", type: "string"} 
                    ], 
                    layer: vlayer, 
                    addFeatureFilter: function(feature) { return
feature.state !== OpenLayers.State.DELETE; } 
                }); 

                var gridPanel_SEKID_Water_Points = new
Ext.grid.EditorGridPanel({ 
                                region: 'south', 
                                title: 'Map Data', 
                                split: true, 
                                collapsible: true, 
                                height: 300, 
                                minSize: 100, 
                                maxSize: 500, 
                                store: fStore_SEKID_Water_Points, 
                                sm: new
GeoExt.grid.FeatureSelectionModel({selectControl:
modifyControl.selectControl, singleSelect: true}), 
                                cm: new Ext.grid.ColumnModel ({ defaults:
{sortable: true, editor: {xtype: "textfield"}}, columns: [ {header:
"Entity", dataIndex: "Entity"}, {header: "Handle", dataIndex: "Handle"},
{header: "Layer", dataIndex: "Layer"} ] }), 
                                listeners: { afteredit: function(e) { var
feature = e.record.get("feature"); if (feature.state !==
OpenLayers.State.INSERT) { feature.state = OpenLayers.State.UPDATE; } } } 
                }); 
                
                var mainPanel = new Ext.Panel({ 
                                region: 'center', 
                                layout: 'border', 
                                border: false, 
                                items: [mapPanel,
gridPanel_SEKID_Water_Points] 
                });                

Samuel Smith 
Groundlevel Geographics [DBA] 

-- 
View this message in context: 
http://osgeo-org.1803224.n2.nabble.com/OpenLayers-to-GeoServer-8080-OWS-in-ASP-Net-on-IIS-80-tp5541183p5541183.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.
_______________________________________________
Users mailing list
us...@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/openlayers-users

Reply via email to