Hi Ben,

Thanks very much for the help.  I have since migrated to OpenLayers since
they have a function that writes the transaction GML for you, which has
made things much simpler.  However, I would love to ask another question.
I'm seeing a " Feature type 'aoi_features' is not available" error (I'll
paste the trace bellow).  I checked the logs on start-up and it seems that
WFS is enabled on the workspace.  I see two broad possibilities:


   1. The namespace is still not specified correctly in the GML as sent out
   by OpenLayer (I'll paste the new GML request below).  My workspace = aoi,
   data-store = aoi_store, layer = aoi_features
      1. my data store is a postgis database and the 'aoi_features' layer
      is a table with just an ID and GEOM column.
   2. The workspace is not configured correctly on the GeoServer side
      1. Other than checking the box to enable transactions, I'm not sure
      what else to configure here.


Thanks again for your help!

Best,
Todd

my GML:

<Transaction xmlns="http://www.opengis.net/wfs"; service="WFS"
version="1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/
wfs/1.1.0/wfs.xsd">
<Insert>
<aoi_features xmlns="http://www.tcartadata.com/geoserver/wfs/aoi";>
<geometry>
<Polygon xmlns="http://www.opengis.net/gml"; srsName="EPSG:3857">
<exterior>
<LinearRing srsName="EPSG:3857">
<posList srsDimension="2">-14079089.113903182 5126784.361143341
-14196496.389349211 4138606.4594725836 -13413781.219709007
2622095.8182946863 -12063597.552079653 2817774.6107047377
-11760295.423844075 4275581.614159619 -12679985.748171315 5048512.844179321
-14079089.113903182 5126784.361143341
</posList>
</LinearRing>
</exterior>
</Polygon>
</geometry>
</aoi_features>
</Insert>
</Transaction>

Here's the error trace from the logs:

2018-06-14 22:28:59,599 INFO [geoserver.wfs] -
Request: getServiceInfo
2018-06-14 22:28:59,601 DEBUG [geotools.xml] - schemaLocation found:
http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
2018-06-14 22:28:59,602 DEBUG [geotools.xml] - Found override for
http://www.opengis.net/wfs: http://schemas.opengis.net/wfs/1.1.0/wfs.xsd ==>
jar:file:/home/tcartada/appservers/apache-tomcat-8x/
webapps/geoserver/WEB-INF/lib/gs-wfs-2.13.0.jar!/org/
geoserver/wfs/xml/v1_1_0/wfs.xsd
2018-06-14 22:28:59,603 DEBUG [geotools.xml] - Could not find declaration
for: {http://www.tcartadata.com/geoserver/wfs/aoi}aoi_features. Checking if
containing type declares a single particle.
2018-06-14 22:28:59,604 DEBUG [geotools.xml] - Could not find declaration
for: {http://www.tcartadata.com/geoserver/wfs/aoi}geometry. Checking if
containing type declares a single particle.
2018-06-14 22:28:59,604 DEBUG [geotools.xml] - Could not find declaration
for: {http://www.tcartadata.com/geoserver/wfs/aoi}geometry. Performing
lookup by ignoring namespace
2018-06-14 22:28:59,604 DEBUG [geotools.xml] - Could not find declaration
for: {http://www.tcartadata.com/geoserver/wfs/aoi}geometry. Creating a mock
element declaration and parsing anyways...
2018-06-14 22:28:59,610 DEBUG [geoserver.wfs] - Locating FeatureSource uri:'
http://www.tcartadata.com/geoserver/wfs/aoi' name:'aoi_features'
2018-06-14 22:28:59,610 ERROR [geoserver.ows] -
2018-06-14 21:47:24,323 ERROR [geoserver.ows] -
org.geoserver.wfs.WFSTransactionException: Feature type 'aoi_features' is
not available:
at org.geoserver.wfs.Transaction.execute(Transaction.java:221)
at org.geoserver.wfs.Transaction.transaction(Transaction.java:109)
at org.geoserver.wfs.DefaultWebFeatureService.transaction(
DefaultWebFeatureService.java:172)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection
(AopUtils.java:333)
at org.springframework.aop.framework.ReflectiveMethodInvocation.
invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:157)
at org.geoserver.ows.util.RequestObjectLogger.invoke(
RequestObjectLogger.java:55)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.
invoke(JdkDynamicAopProxy.java:213)
at com.sun.proxy.$Proxy95.transaction(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.geoserver.ows.Dispatcher.execute(Dispatcher.java:867)
at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:270)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(
AbstractController.java:174)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
.handle(SimpleControllerHandlerAdapter.java:50)
at org.springframework.web.servlet.DispatcherServlet.
doDispatch(DispatcherServlet.java:963)
at org.springframework.web.servlet.DispatcherServlet.
doService(DispatcherServlet.java:897)
at org.springframework.web.servlet.FrameworkServlet.processRequest(
FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.
doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at org.springframework.web.servlet.FrameworkServlet.
service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:206)
at org.apache.catalina.filters.CorsFilter.handleSimpleCORS(
CorsFilter.java:301)
at org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:169)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:206)
at org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(
ThreadLocalsCleanupFilter.java:28)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:206)
at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(
SpringDelegatingFilter.java:75)
at org.geoserver.monitor.MonitorFilter.doFilter(MonitorFilter.java:144)
at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(
SpringDelegatingFilter.java:71)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.
doFilterInternal(OpenSessionInViewFilter.java:231)
at org.springframework.web.filter.OncePerRequestFilter.
doFilter(OncePerRequestFilter.java:107)
at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(
SpringDelegatingFilter.java:71)
at org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:71)
at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(
SpringDelegatingFilter.java:71)
at org.geoserver.filters.SpringDelegatingFilter.doFilter(
SpringDelegatingFilter.java:46)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:206)
at org.geoserver.platform.AdvancedDispatchFilter.doFilter(
AdvancedDispatchFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:206)
at org.springframework.security.web.FilterChainProxy$
VirtualFilterChain.doFilter(FilterChainProxy.java:316)
at org.geoserver.security.filter.GeoServerCompositeFilter$
NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.access.intercept.
FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)
at org.springframework.security.web.access.intercept.
FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)
at org.geoserver.security.filter.GeoServerCompositeFilter$
NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(
GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$
VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.geoserver.security.filter.GeoServerCompositeFilter$
NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.access.ExceptionTranslationFilter.
doFilter(ExceptionTranslationFilter.java:114)
at org.geoserver.security.filter.GeoServerCompositeFilter$
NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(
GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$
VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.geoserver.security.filter.GeoServerAnonymousAuthenticati
onFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:54)
at org.springframework.security.web.FilterChainProxy$
VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.geoserver.security.filter.GeoServerCompositeFilter$
NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)
at org.springframework.security.web.context.SecurityContextPersistenceFilt
er.doFilter(SecurityContextPersistenceFilter.java:91)
at org.geoserver.security.filter.GeoServerSecurityContextPersis
tenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:53)
at org.geoserver.security.filter.GeoServerCompositeFilter$
NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(
GeoServerCompositeFilter.java:92)
at org.springframework.security.web.FilterChainProxy$
VirtualFilterChain.doFilter(FilterChainProxy.java:330)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(
FilterChainProxy.java:213)
at org.springframework.security.web.FilterChainProxy.doFilter(
FilterChainProxy.java:176)
at org.geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(
GeoServerSecurityFilterChainProxy.java:152)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(
DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(
DelegatingFilterProxy.java:262)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:206)
at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:88)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:206)
at org.geoserver.filters.XFrameOptionsFilter.doFilter(
XFrameOptionsFilter.java:89)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:206)
at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:42)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:206)
at org.geoserver.filters.SessionDebugFilter.doFilter(
SessionDebugFilter.java:48)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:206)
at org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:44)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(
CharacterEncodingFilter.java:197)
at org.springframework.web.filter.OncePerRequestFilter.
doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(
StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(
AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(
StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(
ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(
AbstractAccessLogValve.java:617)
at org.apache.catalina.core.StandardEngineValve.invoke(
StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(
CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(
AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.
process(AbstractProtocol.java:668)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.
doRun(NioEndpoint.java:1521)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.
run(NioEndpoint.java:1478)
at java.util.concurrent.ThreadPoolExecutor.runWorker(
ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(
ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(
TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)


On Wed, Jun 13, 2018 at 5:06 PM, Ben Caradoc-Davies <b...@transient.nz>
wrote:

> Todd,
>
> secondary namespaces are only required for the app-schema data store,
> which does not support WFS-T.
>
> For non-app-schema data stores, namespace prefixes should be defined in
> the WFS-T request document. The error you see is consistent with an
> undefined namespace prefix. Try adding an xmlns:aoi_points attribute to the
> wfs:Transaction element.
>
> Kind regards,
> Ben.
>
>
> On 14/06/18 06:39, Todd Jacobus wrote:
>
>> Hi all,
>>
>> Thank you for viewing this post.  I'm trying to set up a simple WFS-T
>> datastore on a PostGIS database table that talks to a leaflet map.  I'm
>> using jquery ajax to send a transaction POST request by sending the
>> transaction-insert xml stored as a string.  The request seems to go
>> through
>> just fine, but in the GeoServer logs I see a namespace error:
>>
>>   "2018-06-13 19:11:16,073 ERROR [geoserver.ows] -
>> org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 26; The
>> prefix
>> "aoi_points" for element "aoi_points:wfst_aoi" is not bound."
>>
>> Some googling directed me to the secondary namespaces
>> <http://docs.geoserver.org/stable/en/user/data/app-schema/
>> secondary-namespaces.html#when-to-configure-for-secondary-namespaces>
>> page in the docs, but I'm not sure what's going on here.  A couple of
>> things:
>>
>>
>>     1.  Can someone explain why (or if) a secondary namespace might be
>>     necessary in this case?
>>     2.  How can I reference a database table properly in the xml
>> transaction
>>
>>     request?
>>
>> Here's the full xml request I'm sending to GeoServer:
>>
>>          '<wfs:Transaction'
>>          '  service="WFS"\n'
>> '  version="1.1.0"\n'
>>          '  xmlns:grp="http://lab.georepublic.info"\n'
>> '  xmlns:wfs="http://www.opengis.net/wfs"\n'
>> '  xmlns:gml="http://www.opengis.net/gml"\n'
>> '  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n'
>> '  xsi:schemaLocation="http://www.opengis.net/wfs\n'
>> '
>> http://schemas.opengis.net/wfs/1.1.0/WFS-transaction.xsd\n'
>> '
>> http://www.example.com/geoserver/wfs/DescribeFeatureType?
>> typename=aoi:wfst_aoi
>> ">\n'
>> '  <wfs:Insert>\n'
>> '    <aoi_points:wfst_aoi>\n'
>> '      <wfst_aoi:geom>\n'
>> '        <gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:4326">\n'
>> '          <gml:coordinates decimal="." cs="," ts=" ">' +
>> geoJson[0].geometry.coordinates + '</gml:coordinates>\n'
>> '        </gml:Polygon>\n'
>> '      </wfst_aoi:geom>\n'
>> '    </aoi_points:wfst_aoi>\n'
>> '  </wfs:Insert>\n'
>> '</wfs:Transaction>'
>>
>> Thanks very much!
>>
>> Best,
>> Todd
>>
>>
>>
>> ------------------------------------------------------------
>> ------------------
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>
>>
>>
>> _______________________________________________
>> Geoserver-users mailing list
>>
>> Please make sure you read the following two resources before posting to
>> this list:
>> - Earning your support instead of buying it, but Ian Turton:
>> http://www.ianturton.com/talks/foss4g.html#/
>> - The GeoServer user list posting guidelines:
>> http://geoserver.org/comm/userlist-guidelines.html
>>
>> If you want to request a feature or an improvement, also see this:
>> https://github.com/geoserver/geoserver/wiki/Successfully-req
>> uesting-and-integrating-new-features-and-improvements-in-GeoServer
>>
>>
>> Geoserver-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/geoserver-users
>>
>>
> --
> Ben Caradoc-Davies <b...@transient.nz>
> Director
> Transient Software Limited <https://transient.nz/>
> New Zealand
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this 
list:
- Earning your support instead of buying it, but Ian Turton: 
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines: 
http://geoserver.org/comm/userlist-guidelines.html

If you want to request a feature or an improvement, also see this: 
https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer


Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to