This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information

rest und PostgreSQL

Allgemeine Fragen zur Entwicklung von und mit JVx.

rest und PostgreSQL

Postby alladinbp » 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.

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.
alladinbp
 
Posts: 39
Joined: Tue Oct 11, 2011 2:27 pm

Re: rest und PostgreSQL

Postby Development@SIB » Fri Dec 16, 2011 4:49 pm

Die REST Anbindung ist noch taufrisch - vielen Dank für den Test mit PostgreSql. In der Tat ist Postgresql bei Typ Konvertierung etwas spezieller als andere Datenbanken. Wir haben diesbezüglich noch ein paar andere Punkte offen.

Die Doku ist mal ein erster Entwurf und wurde vorab schon veröffentlicht obwohl das Feature eigentlich nur in den Sourcen zu haben ist. Wir werden uns natürlich umgehend um die Korrektur aller Punkte bemühen.
User avatar
Development@SIB
 
Posts: 325
Joined: Mon Sep 28, 2009 1:54 pm

Re: rest und PostgreSQL

Postby Development@SIB » Fri Dec 16, 2011 5:23 pm

Die Darstellung funktioniert nun mit Chrome. Mit Firefox haben wir keine Probleme festgestellt. Es wurde kein div verwendet, ein simples span.

Details zum REST Problem, siehe Support System.
User avatar
Development@SIB
 
Posts: 325
Joined: Mon Sep 28, 2009 1:54 pm


Return to Development (DE)