rest und PostgreSQL
Posted: Fri Dec 16, 2011 4:14 pm
Hallo,
waren gerade dabei die neue REST-Anbindung zu testen. Dabei fällt auf, dass man bei einem Request auf http://server:port/webapp/services/rest ... GE_NAME/PK mit einem PK vom Integer-Typ unter PostgreSQL ein Fehler auftritt.
Scheinbar wird die URL geparst und PK bleibt in einem String. Das dürfte bei MySql funktionieren wegen automatischem Typecast, allerdings bei PostgreSQL nicht.
Abgesehen davon:
Die Dokumentation der REST-Anbindung wird beim Google Chrome vom Forum abgeschnitten. Womöglich weil das div eine zu geringe Breite hat.
Von
im Firefox bleibt beim Chrome nur
übrig.
waren gerade dabei die neue REST-Anbindung zu testen. Dabei fällt auf, dass man bei einem Request auf http://server:port/webapp/services/rest ... GE_NAME/PK mit einem PK vom Integer-Typ unter PostgreSQL ein Fehler auftritt.
Scheinbar wird die URL geparst und PK bleibt in einem String. Das dürfte bei MySql funktionieren wegen automatischem Typecast, allerdings bei PostgreSQL nicht.
- Code: Select all
Internal Server Error (500) - fetch statement failed! - SELECT * FROM v_machine_data WHERE id = ?
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:505)
at org.restlet.resource.ServerResource.get(ServerResource.java:695)
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:577)
at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:637)
at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:336)
at org.restlet.resource.ServerResource.handle(ServerResource.java:899)
at org.restlet.resource.Finder.handle(Finder.java:243)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.routing.Router.doHandle(Router.java:428)
at org.restlet.routing.Router.handle(Router.java:645)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.routing.Router.doHandle(Router.java:428)
at org.restlet.routing.Router.handle(Router.java:645)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:151)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:208)
at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:75)
at org.restlet.Application.handle(Application.java:378)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.routing.Router.doHandle(Router.java:428)
at org.restlet.routing.Router.handle(Router.java:645)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.routing.Router.doHandle(Router.java:428)
at org.restlet.routing.Router.handle(Router.java:645)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.engine.CompositeHelper.handle(CompositeHelper.java:208)
at org.restlet.Component.handle(Component.java:389)
at org.restlet.Server.handle(Server.java:513)
at org.restlet.engine.ServerHelper.handle(ServerHelper.java:69)
at org.restlet.engine.adapter.HttpServerHelper.handle(HttpServerHelper.java:149)
at org.restlet.ext.servlet.ServerServlet.service(ServerServlet.java:1089)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:470)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.rad.persist.DataSourceException: fetch statement failed! - SELECT * FROM v_machine_data WHERE id = ?
at com.sibvisions.rad.persist.jdbc.DBAccess.fetch(Unknown Source)
at com.sibvisions.rad.persist.jdbc.DBStorage.executeFetch(Unknown Source)
at com.sibvisions.rad.persist.AbstractStorage.fetch(Unknown Source)
at com.sibvisions.rad.persist.AbstractStorage.fetch(Unknown Source)
at com.sibvisions.rad.persist.AbstractStorage.fetchBean(Unknown Source)
at com.sibvisions.rad.server.http.rest.AbstractStorageServerResource.executeFetch(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:494)
... 58 more
Caused by: java.sql.SQLException: PostgreSQL-42883: ERROR: operator does not exist: integer = character varying
Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Position: 39
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2103)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1836)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:512)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:273)
... 69 more
Abgesehen davon:
Die Dokumentation der REST-Anbindung wird beim Google Chrome vom Forum abgeschnitten. Womöglich weil das div eine zu geringe Breite hat.
Von
- Code: Select all
Wenn der PK aus mehreren Spalten zusammengesetzt ist, müssen die Query Parameter verwendet werden:
http://server:port/webapp/services/rest/APPLICATION_NAME/LIFECYCLE_CLASS/data/STORAGE_NAME?PKCOLUMN=VALUE&PKCOLUMN2=VALUE
im Firefox bleibt beim Chrome nur
- Code: Select all
Wenn der PK aus mehreren Spalten zusammengesetzt ist, müssen die Query Parameter verwendet werden:
http://server:port/webapp/services/rest/APPLICATION_NAME/LIFECYCLE_CLASS/data/STORAGE_NAME?PK
übrig.