Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am trying to save changes via WFS-T using GeoServer:

var editLayer = new OpenLayers.Layer.Vector("Edit Layer", {
        visibility: false,
        strategies: [new OpenLayers.Strategy.BBOX(), saveStrategy],
        rendererOptions: { zIndexing: true },
        projection: new OpenLayers.Projection("EPSG:900913"),
        protocol: new OpenLayers.Protocol.WFS({
            srsName: "EPSG:900913",
            url: URL,
            featureType: "SETTLEMENTS",
            featureNS: NS,
            featurePrefix: Prefix,
            geometryName: "GEOM",
            version: "1.1.0"
        eventListeners: ...

But the server returns error:

<?xml version="1.0" encoding="UTF-8"?>
<ows:ExceptionReport version="1.0.0"
  xsi:schemaLocation=" http://../geoserver/schemas/ows/1.0.0/owsExceptionReport.xsd"
  xmlns:xsi="" xmlns:ows="">
  <ows:Exception exceptionCode="NoApplicableCode">
    <ows:ExceptionText>{http://...}SETTLEMENTS is read-only</ows:ExceptionText>

Why is the feature readonly and how to fix it?

share|improve this question
what sort of data source is underlying your layer? – iant Jun 12 '12 at 14:26
@iant, Oracle database with SDO_GEOMETRY to store geometry data. – 0x49D1 Jun 12 '12 at 14:39

The most likely problem is that the user that is running GeoServer doesn't have write permission to the table (or one of the support metadata tables). If you are running inside Tomcat then there is (or should be) a tomcat user running the process who will almost certainly not have write permissions to the tables.

share|improve this answer
Yes, im using tomcat. Sorry, didnt mentioned that before. I was given the virtual machine with everything preinstalled, so dont know all the bones. Thank you for the answer, will check it tommorow morning, but think you're right. Also thank you for edit. – 0x49D1 Jun 12 '12 at 14:55
on geoserver in stores i have a 'map' user and in oracle ive granted all priviledges on the table i want edit/insert geometry. But nothing works. Cant find where is the connectin between tomcat and oracle..Where to grant something to tomcat user on oracle tables? Just found that im connecting using some username and granted priviledges to him. If i try to insert via wsf-t into another table that was created by user 'map' -everything works fine. The 'SETTLEMENTS' table was imported into oracle from shapefile before i was given the preinstalled geoserver/oracle server. – 0x49D1 Jun 13 '12 at 8:17
Can you, please, show how to grant persmissions on the needed tables to the user who is running geoserver? – 0x49D1 Jun 13 '12 at 8:19
Seems that i have THIS: problem. – 0x49D1 Jun 13 '12 at 8:25
up vote 1 down vote accepted

The answer is: i had no PK on that table. To add it to existing table with records used this answer.

share|improve this answer

The same error occurs if the table has a timestamp (using Oracle db). Doing it without a timestamp solved the problem.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.