My goal is to have one single servlet that gets told the schemname/tablename 
and then provides one odata service each, returning this table's data.
As I read the source code, it is using the servlet path as the odata root and 
therefore this is not possible. Do you agree or do you have any suggestions?

My thoughts had been:

The obvious starting point would be to have a single service with multiple 
entitysets, one entityset per database table. But the $metadata would be 
enormous then, given there are 100'000 tables with 100 columns in average.
Hence this is not viable.
Having 100'000 servlets and adding more whenever a new table is created does 
not make sense either.

Better to have
a) a single servlet at the path @WebServlet("/odata/*")
b) a check via the URI to get schema and table names. The request would look 
like http://localhost/odata/schema1/table1.svc
c) a single Edm, Processor and Handler per table, generated using the database 
table metadata
d) a Metadata request which looks like this: 
http://localhost/odata/schema1/table1.svc$metadata

At the moment, when I request 
http://localhost:8080/hanatest/odata/SYS/TABLES.svc/data$metadata the error 
Cannot find EntitySet, Singleton, ActionImport or FunctionImport with name 
'SYS'.  
is shown. For obvious reasons. 

Any ideas what needs to be done to shift the service root two levels down and 
still have a single servlet only?
My current code is essentially modeled after 
https://olingo.apache.org/doc/odata4/tutorials/read/tutorial_read.html

Thanks in advance

Reply via email to