Hi Sergey,
I've tried but the same problem occurs.
the only ways to call the ws without exceptions seem to be:
1) remove the annotation @Path
2) or replace it with general @Path("/")
Cheers,
Andrea
Date: Tue, 4 Jun 2013 07:19:00 -0700
From: [email protected]
To: [email protected]
Subject: Re: CXF and swagger
Hi
On 04/06/13 14:31, eanbiso wrote:
>
> Hi Sergey,
> the annotation that is responsible for the failure is the
> @Path("/PubDocs.json")
>
> Removing it the endPoint works fine.
> All the annotations used in the class are the following :
> @Path("/PubDocs.json")
>
> @Api(value = "/PubDocs", description = "Operations about pubDocs")
>
> @Produces({"application/json"})
>
> public class RestPublicDocsJSON extends RestPublicDocs{}
>
I think I know what it is. CXF supports these type extensions
(originally from JAX-RS 0.8 I think), so you do for example,
"GET <a href="http://host:port/PubDocs.json">http://host:port/PubDocs.json" and
the runtime will replace it with
"<a href="http://host:port/PubDocs">http://host:port/PubDocs"
and set
"Accept: application/json"
I think @Path("/PubDocs")
will work with
"GET <a href="http://host:port/PubDocs.json">http://host:port/PubDocs.json"
Can you try it ?
I think we also need to get RequestPreprocessor configurable (which is
where extensions like .json are checked), we have a JIRA for that
Cheers, Sergey
>
> Thanks,
>
> Andrea
>
> Date: Tue, 4 Jun 2013 02:13:05 -0700
> From: [hidden email]
> To: [hidden email]
> Subject: Re: CXF and swagger
>
>
>
> Hi
>
> On 03/06/13 16:32, eanbiso wrote:
>
>> Hi all,
>
>> I'm trying to publish and use cxf rest endPoint adding annotations required
>
>> to use the framework com.wordnik.swagger
>
>> I tried to follow the example at
>
>> https://github.com/wordnik/swagger-core/tree/master/samples/java-jaxrs-cxf/src/main/java/com/wordnik/swagger/sample
>> with some differences: I must publish the endPoint directly from java code.
>
>> My situatios is the following...
>
>>
>
>> I have an endPoint with a simple interface like this:
>
>>
>
>> @WebService(targetNamespace = http://com.prova.pubdocs/)
>
>> public interface IPublic extends IPublishable{
>
>>
>
>> @GET
>
>> @Path("/isReady")
>
>> @ApiOperation(value = "Check the instance is ready or not", notes =
>
>> "Returns a boolean corresponding to the instance state.", responseClass =
>
>> "boolean")
>
>> boolean isReady();
>
>>
>
>> }
>
>> (the interface IPublishable specifies only the methods to publish and
>
>> unpublish the endPoints),
>
>>
>
>> and an implementor like this:
>
>> @WebService("RestServicePubDocs", "PubDocs")
>
>> public class RestPublicDocs implements IPublic, IPlat1Service {
>
>>
>
>> @Override
>
>> public boolean isReady() {
>
>> return true;
>
>> }
>
>> ....
>
>> }
>
>>
>
>> Following the example I've also daclared the class:
>
>>
>
>> @Path("/PubDocs.json")
>
>> @Api(value = "/PubDocs", description = "Operations about pubDocs")
>
>> @Produces({"application/json"})
>
>> public class RestPublicDocsJSON extends RestPublicDocs{}
>
>>
>
>> and then I've published the end point in a similar way:
>
>>
>
>> private Server publishRestServerSwagger(String addr,
>
>> List<Interceptor<? extends Message>> inInterceptors,
>
>> List<Interceptor<? extends Message>>
>> outInterceptors){
>
>> Server simpl=null;
>
>> try {
>
>> JAXRSServerFactoryBean sf = new
>> JAXRSServerFactoryBean();
>
>> sf.setServiceBean(new RestPublicDocsJSON()); //the
>> implementor
>
>> sf.setServiceBean(new ApiListingResourceJSON());
>> //required from swagger
>
>> sf.setAddress(addr);
>
>> sf.setProvider(new JacksonJsonProvider()); //required
>> from swagger
>
>> sf.setProvider(new RestExceptionHandler()); //my
>> exception mapper
>
>>
>
>> if (inInterceptors != null) {
>
>> for (Interceptor<? extends Message> interceptor
>> : inInterceptors) {
>
>> sf.getInInterceptors().add(interceptor);
>
>> }
>
>> }
>
>> if (outInterceptors != null) {
>
>> for (Interceptor<? extends Message> interceptor
>> : outInterceptors) {
>
>>
>> sf.getOutInterceptors().add(interceptor);
>
>> }
>
>> }
>
>>
>
>> //add new rest fault interceptor
>
>> sf.getOutFaultInterceptors().add(new
>> RestFaultInterceptor());
>
>> //new management end
>
>> simpl = sf.create();
>
>> //disable honorKeepAlive value depending on VMArg
>> (honorKeepAlive default
>
>> value is true)
>
>> log.info("Endpoint has been published on " + addr);
>
>> } catch (Exception e) {
>
>> log.warn("Error publishing endpoint: " + e.toString(),
>> e);
>
>> }
>
>>
>
>> return simpl;
>
>> }
>
>>
>
>>
>
>> The publication seems to be successful and no exception occurs but when I
>
>> call the ws, a javax.ws.rs.WebApplicationException with status 404 and all
>
>> values null occurs.
>
>> If I remove the annotations from the RestPublicDocsJSON class the api works
>
>> properly and no exception occurs.
>
>> Someone can help me?
> I can't see what may be going wrong from the code above.
>
> In this fragment,
>
>
> > @Path("/PubDocs.json")
>
> > @Api(value = "/PubDocs", description = "Operations about pubDocs")
>
> > @Produces({"application/json"})
>
> > public class RestPublicDocsJSON extends RestPublicDocs{}
>
>
> which annotations affect the api working properly ? Are these
>
> annotations the only ones on RestPublicDocsJSON ?
>
>
> Sergey
>
>
>
>> Thanks a lot,
>
>>
>
>> Andrea
>
>>
>
>>
>
>>
>
>> --
>
>> View this message in context:
>> http://cxf.547215.n5.nabble.com/CXF-and-swagger-tp5728644.html
>> Sent from the cxf-user mailing list archive at Nabble.com.
>
>>
>
>
>
>
>
>
>
>
>
>
>
>
> If you reply to this email, your message will be added to the
> discussion below:
>
> http://cxf.547215.n5.nabble.com/CXF-and-swagger-tp5728644p5728690.html
>
>
>
> To unsubscribe from CXF and swagger, click here.
>
> NAML
>
>
>
>
> --
> View this message in context:
> http://cxf.547215.n5.nabble.com/CXF-and-swagger-tp5728644p5728720.html
> Sent from the cxf-user mailing list archive at Nabble.com.
>
If you reply to this email, your message will be added to the
discussion below:
http://cxf.547215.n5.nabble.com/CXF-and-swagger-tp5728644p5728727.html
To unsubscribe from CXF and swagger, click here.
NAML
--
View this message in context:
http://cxf.547215.n5.nabble.com/CXF-and-swagger-tp5728644p5728742.html
Sent from the cxf-user mailing list archive at Nabble.com.