I've stumbled upon a very similar situation, so I'll add the information I have here with the hopes of contributing to a solution.
My setup:
- On a Debian linux server:
- PostGIS 2.0/PostgreSQL 8.4
- GeoServer 2.4.0
- On Windows 7 x64:
For testing purposes I'm trying to edit (tried both insert and delete) the demo layer tiger:poi
in GeoServer, using QGIS. Below, step by step, are logs I've gathered:
17:53:30,192: POST request (from Fiddler):
to http://my.server/geoserver/wfs?SERVICE=WFS&VERSION=1.0.0&SRSNAME=EPSG:4326
<Transaction xmlns="http://www.opengis.net/wfs"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="1.0.0"
service="WFS"
xsi:schemaLocation="http://www.census.gov
http://my.server/geoserver/wfs?SERVICE=WFS&VERSION=1.0.0&REQUEST=DescribeFeatureType&TYPENAME=tiger:poi&SRSNAME=EPSG:4326"
xmlns:gml="http://www.opengis.net/gml"
xmlns:tiger="http://www.census.gov">
<Delete xmlns="http://www.opengis.net/wfs" typeName="tiger:poi">
<Filter xmlns="http://www.opengis.net/ogc">
<FeatureId xmlns="http://www.opengis.net/ogc" fid="poi.8"/>
</Filter>
</Delete>
</Transaction>
17:53:30,364: GeoServer receives the request:
2014-11-13 17:53:30,364 INFO [geoserver.wfs] -
Request: getServiceInfo
2014-11-13 17:53:35,396 INFO [geoserver.wfs] -
Request: getServiceInfo
2014-11-13 17:53:35,398 INFO [geoserver.wfs] -
Request: describeFeatureType
service = WFS
version = 1.0.0
baseUrl = http://localhost:8080/geoserver/
typeName[0] = {http://www.census.gov}poi
outputFormat = XMLSCHEMA
17:54:30: QGIS reports the commit error after 1 minute (timed-out):
17:58:35,475: Exactly 5 minutes after the request, with no further action on my part, GeoServer logs the following:
2014-11-13 17:58:35,475 WARN [geotools.xml] - Error parsing:
http://my.server/geoserver/wfs?SERVICE=WFS&VERSION=1.0.0&REQUEST=DescribeFeatureType&TYPENAME=tiger:poi&SRSNAME=EPSG:4326
2014-11-13 17:58:35,481 WARN [geotools.xml] - Could not find a schema
2014-11-13 17:58:35,559 INFO [geoserver.gwc] - DataStoreChange: {http://www.census.gov}poi PostDelete
2014-11-13 17:58:35,693 INFO [seed.GWCTask] - Thread group finished TRUNCATE task after 0.0 seconds
2014-11-13 17:58:35,697 INFO [seed.GWCTask] - Thread group finished TRUNCATE task after 0.0 seconds
2014-11-13 17:58:35,701 INFO [seed.GWCTask] - Thread group finished TRUNCATE task after 0.0 seconds
2014-11-13 17:58:35,705 INFO [seed.GWCTask] - Thread group finished TRUNCATE task after 0.0 seconds
2014-11-13 17:58:35,738 INFO [geoserver.wfs] -
Request: transaction
service = WFS
version = 1.0.0
baseUrl = http://localhost:8080/geoserver/
group[0] = wfs:delete=net.opengis.wfs.impl.DeleteElementTypeImpl@44c2fcca (filter: [ poi.8 ], handle: null, typeName: {http://www.census.gov}poi)
delete[0]:
filter = [ poi.8 ]
typeName = {http://www.census.gov}poi
releaseAction = ALL
After this, the feature was not deleted of course but, interestingly, a subsequent insert operation gave a similar log response, except the feature was then added.
18:47:26,251: 5 minutes after an insert operation, GeoServer logged this and added the feature:
2014-11-13 18:47:26,251 WARN [geotools.xml] - Error parsing:
http://my.server/geoserver/wfs?SERVICE=WFS&VERSION=1.0.0&REQUEST=DescribeFeatureType&TYPENAME=tiger:poi&SRSNAME=EPSG:4326
2014-11-13 18:47:26,252 WARN [geotools.xml] - Could not find a schema
2014-11-13 18:47:26,273 INFO [geoserver.gwc] - DataStoreChange: {http://www.census.gov}poi PreInsert
2014-11-13 18:47:26,290 INFO [geoserver.gwc] - DataStoreChange: {http://www.census.gov}poi PostInsert
2014-11-13 18:47:26,312 INFO [seed.GWCTask] - Thread group finished TRUNCATE task after 0.0 seconds
2014-11-13 18:47:26,313 INFO [seed.GWCTask] - Thread group finished TRUNCATE task after 0.0 seconds
2014-11-13 18:47:26,314 INFO [seed.GWCTask] - Thread group finished TRUNCATE task after 0.0 seconds
2014-11-13 18:47:26,317 INFO [seed.GWCTask] - Thread group finished TRUNCATE task after 0.0 seconds
2014-11-13 18:47:26,329 INFO [geoserver.wfs] -
Request: transaction
service = WFS
version = 1.0.0
baseUrl = http://localhost:8080/geoserver/
group[0] = wfs:insert=net.opengis.wfs.impl.InsertElementTypeImpl@6f929696 (feature: [SimpleFeatureImpl:poi=[SimpleFeatureImpl.Attribute: the_geom<the_geom id=fid--492f5793_149aa05031b_-7ffe>=POINT (-74.01345063373635 40.71583592083637), SimpleFeatureImpl.Attribute: NAME<NAME id=fid--492f5793_149aa05031b_-7ffe>=Test2, SimpleFeatureImpl.Attribute: THUMBNAIL<THUMBNAIL id=fid--492f5793_149aa05031b_-7ffe>=null, SimpleFeatureImpl.Attribute: MAINPAGE<MAINPAGE id=fid--492f5793_149aa05031b_-7ffe>=null]], handle: null, idgen: <unset>, inputFormat: <unset>, srsName: null)
insert[0]:
feature[0] = SimpleFeatureImpl:poi=[SimpleFeatureImpl.Attribute: the_geom<the_geom id=fid--492f5793_149aa05031b_-7ffe>=POINT (-74.01345063373635 40.71583592083637), SimpleFeatureImpl.Attribute: NAME<NAME id=fid--492f5793_149aa05031b_-7ffe>=Test2, SimpleFeatureImpl.Attribute: THUMBNAIL<THUMBNAIL id=fid--492f5793_149aa05031b_-7ffe>=null, SimpleFeatureImpl.Attribute: MAINPAGE<MAINPAGE id=fid--492f5793_149aa05031b_-7ffe>=null]
idgen = GenerateNew
inputFormat = text/xml; subtype=gml/3.1.1
releaseAction = ALL
Playing around with QGIS's POST contents, I noticed that removing the schemaLocation turned the request successful. A successful request from uDig also did not use schemaLocation.
That is, I removed this:
xsi:schemaLocation="http://www.census.gov http://my.server/geoserver/wfs?SERVICE=WFS&VERSION=1.0.0&REQUEST=DescribeFeatureType&TYPENAME=tiger:poi&SRSNAME=EPSG:4326"