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
>
>

Reply via email to