Hi
On 04/06/13 17:35, eanbiso wrote:
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("/")

Hmm, so which URI works ?
When you have

@Path("/PubDocs.json")

then you obviously expect "/PubDocs.json" be in the request URI, but you say it starts working if we remove the above @Path. So which request URI works for you ?

Sergey
Cheers,
Andrea

Date: Tue, 4 Jun 2013 07:19:00 -0700
From: ml-node+s547215n5728727...@n5.nabble.com
To: bisoma...@hotmail.it
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&lt;? extends Message>> inInterceptors,



                        List<Interceptor&lt;? 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.



--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com

Reply via email to