When dispatching requests, the DefaultServiceFactory.createEngine() method does an exact match on the path. So if you specify "Products" as the path when you call addFactory(), your service will only see requests for/Products. It will not see requests for/Products/xxx.
I can think of two workarounds:
1) The simplest workaround is to specify the product ID with a URL parameter --/Products?id=xxx. Then you can parse the product ID when your service gets the request. Of course, this is not very RESTful. Ideally, the individual product should have it's own address. URL parameters shouldn't be necessary.
2) The second workaround is to implement your own ServiceFactory. You can steal most of the code from DefaultServiceFactory, but your version of createEngine() would know that only the first path element is important when dispatching requests. I haven't tried creating a different implementation of ServiceFactory, but it should work.
Let us know if either of the above works for you. Meanwhile, I will discuss this with some other folks on the team and see if we can fix this in a future build.
Thanks.
-- Dave