I'm working on something else but I can also see that a request like "http://mypc:9000?_wadl" resulgts in 404 while
"http://mypc:9000/?_wadl" works, with the trailing slash making a difference (only as far as the wadl retrieval is concerned), so a bit more work is needed here... cheers, Sergey On Wed, Nov 10, 2010 at 11:43 AM, Sergey Beryozkin <[email protected]>wrote: > Hi > > I'm a bit confused, obviously "http://mypc:9000/api/service?_wadl" was > just an example you gave me... > > For a start, the fact that "http://mypc:9000?_wadl" is not giving you a > wadl instance describing all the root resources is a bug most likely to do > with the fact the embedded Jetty is used - I'll verify. You may actually > want to try "http://mypc:9000/?_wadl", note the trailing forward slash. > I've fixed an http-transport level bug a couple of days ago to do with some > ambiguity in cases with trailing forward slashes, only exposed when certain > address combinations were used. > > Now, I'm not exactly sure about say > > > /catalog/CatalogService (class-level: "/api/v1.0/catalog", function-level: > "/{id}" and "/{id}/delete" and "/{id}/add") > > what is "/catalog/CatalogService" ? it appears that all the root resources > start from "/api/" ? > It is much simpler to understand what is going on when a sample resource > class with relevant bits is posted... > > Besides that, the only I can comment about is that unless you have to use > POST to indicate the deletions and additions (ex, it is not easy to specify > DELETE on the client side) then you may want to remove /delete and /add bits > and use @DELETE and @POST : > > @GET > @PATH("{id}") > SomeBean get(...) {} > > > @POST > @PATH("{id}") > void add(...) {} > > @DELETE > @PATH("{id}") > void delete(...) {} > > also note you use a ?_method=DELETE if no explicit DELETE verb can be set > on the client side > > cheers, Sergey > > > On Wed, Nov 10, 2010 at 11:21 AM, Jérôme Herry <[email protected]> wrote: > >> No, I do sf.setAddress("http://mypc:9000"); >> Here is what I have, maybe it's not the good way: >> /api/VersionService (class-level: "/api/versions", function-level: "/") >> /login/LoginService (class-level: "/api/v1.0/login", function-level: "/") >> /catalog/CatalogService (class-level: "/api/v1.0/catalog", function-level: >> "/{id}" and "/{id}/delete" and "/{id}/add") >> >> What do you think? >> >> 2010/11/10 Sergey Beryozkin <[email protected]> >> >> > Were is "/api/" coming from, is it actually >> > >> > sf.setAddress("http://mypc:9000/api"); >> > >> > that you do ? >> > >> > And one of the root resources has a class-level @Path with the value >> > "/myservice" ? >> > >> > Given the code you shown it appears you have a single endpoint with two >> > root >> > resource classes (VersionService and LoginService) as opposed to two >> > endpoints... >> > >> > "http://mypc:9000/api?_wadl" should give you a WADL with both root >> > resources >> > described. >> > >> > I definitely have a test case confirming it is the case ()with slightly >> > different addresses), but may be in this case, with no servlet transport >> > being involved, this does not work as expected...I'll have to verify >> > >> > cheers, Sergey >> > >> > >> > On Wed, Nov 10, 2010 at 10:19 AM, Jérôme Herry <[email protected]> >> wrote: >> > >> > > I already tried but I also have a 404. It works if I do it on an >> > endpoint, >> > > e.g. http://mypc:9000/api/myservice?_wadl >> > > but I would like to have a WADL with all available services. >> > > Maybe I have to add a provider but I don't know how and which one. >> > > >> > > 2010/11/10 Sergey Beryozkin <[email protected]> >> > > >> > > > Hi >> > > > >> > > > I think in this case the servlet transport is bypassed and no >> handler >> > is >> > > > available for "/services". >> > > > "http://mypc:9000/?_wadl" should do it in this case. >> > > > >> > > > cheers, Sergey >> > > > >> > > > On Wed, Nov 10, 2010 at 10:00 AM, Jérôme Herry <[email protected]> >> > > wrote: >> > > > >> > > > > Hi, I'm using CXF running a jetty server like this: >> > > > > >> > > > > JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean(); >> > > > > List rps = new Vector(); >> > > > > rps.add(new SingletonResourceProvider(new >> VersionService())); >> > > > > rps.add(new SingletonResourceProvider(new LoginService())); >> > > > > ... >> > > > > sf.setResourceProviders(rps); >> > > > > >> > > > > List schemas = new ArrayList(); >> > > > > schemas.add("classpath:/versioning/versions.xsd"); >> > > > > ... >> > > > > sf.setSchemaLocations(schemas); >> > > > > >> > > > > sf.setAddress("http://mypc:9000"); >> > > > > >> > > > sf.getInInterceptors().add(AuthenticationInterceptor.getInstance()); >> > > > > sf.getOutInterceptors().add(OutInterceptor.getInstance()); >> > > > > >> > > > > sf.setStaticSubresourceResolution(true); >> > > > > sf.create(); >> > > > > >> > > > > When I go to http://mypc:9000/services I have a 404 error. I >> would >> > > like >> > > > to >> > > > > have the WADL with all my REST services. How can I do it? >> > > > > >> > > > >> > > >> > >> > >
