Typo, meant We do *not* block custom services exposing their own /services
On Wed, Nov 10, 2010 at 6:37 PM, Sergey Beryozkin <[email protected]>wrote: > > Yes that was an example. But it says that /services give you a list of all >> available webservices in WADL format. >> >> > Only if a CXFServlet is used. We do block custom services exposing their > own /services. Note when CXFServlet is used it is possible to configure it > to let "/services" requests pass through but react to some other path value > for displaying the services page. > > >> 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. >> > >> >> Same result with the slash >> >> It works for me - but the issue will need to be investigated further. > > >> >> > >> > 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... >> > >> >> Ok, here is a bit of code >> >> // >> // Class VersionService >> // >> package com.foo.bar.api; >> >> @Path("/api/versions") >> public class VersionService { >> >> @GET >> @Path("/") >> @Produces(MediaType.TEXT_XML) >> public JAXBElement<SupportedVersionsType> getVersions() { >> ObjectFactory myFactory = new ObjectFactory(); >> ... >> return myFactory.createSupportedVersions(supportedVersions); >> } >> } >> >> // >> // Class LoginService >> // >> package com.foo.bar.login; >> >> @Path("/api/v1.0/login") >> public class LoginService { >> >> @POST >> @Path("/") >> @Produces("application/vnd.foo.bar.login+xml") >> public JAXBElement<ListType> login() { >> ObjectFactory myFactory = new ObjectFactory(); >> ... >> return myFactory.createOrgList(list); >> } >> } >> >> // >> // Class CatalogService >> // >> package com.foo.bar.catalog; >> >> @Path("/api/v1.0/catalog/") >> public class CatalogService { >> >> @GET >> @Path("/{id}") >> @Produces("application/vnd.foo.bar.catalog+xml") >> public JAXBElement<CatalogType> getContent(@PathParam("id") String id) >> { >> ObjectFactory myFactory = new ObjectFactory(); >> ... >> return myFactory.createCatalog(cat); >> } >> >> @POST >> @Path("/{id}/action/upload") >> @Consumes("application/vnd.foo.bar.uploadParams+xml") >> @Produces("application/vnd.foo.bar.catalog+xml") >> public JAXBElement<CatalogType> upload(@PathParam("id") String id, >> UploadParamsType params) { >> ObjectFactory myFactory = new ObjectFactory(); >> ... >> return myFactory.createCatalog(catType); >> } >> >> @POST >> @Path("/{id}/media") >> @Consumes("application/vnd.foo.bar.media+xml") >> @Produces("application/vnd.foo.bar.media+xml") >> public JAXBElement<MediaType> uploadMediaImage(@PathParam("id") String >> id, MediaType mediaParam) { >> ObjectFactory myFactory = new ObjectFactory(); >> ... >> return myFactory.createMedia(mediaType); >> } >> } >> >> The API is given, I cannot change it. >> >> Is the package organisation a problem? Or the "/api" prefix? >> >> > No... > > cheers, Sergey > >
