I have configured JacksonJsonProvider to CXF REST server bean. But what I
notice is CXF does not pick the configured JSON provider. It always returns
405 with following warning.

[qtp260261822-13 - /os/v3/token] WARN org.apache.cxf.jaxrs.utils.JAXRSUtils
- No message body reader has been found for request class TokenRequest,
ContentType : application/json.

I have pasted the code blocks I am using. Can some one explain me where have
I gone wrong here?

------------------------------------------------------------------------------------------------------------------------

CXF Server
=========

public void start(){

        JAXRSServerFactoryBean serverFactory = new JAXRSServerFactoryBean();
        serverFactory.setServiceBean(new IdentityService());
        serverFactory.setAddress("http://10.30.9.56:9000/os";);
        serverFactory.setProviders(Arrays.asList(new
JacksonJsonProvider()));

        BindingFactoryManager manager =
serverFactory.getBus().getExtension(BindingFactoryManager.class);
        JAXRSBindingFactory factory = new JAXRSBindingFactory();
        factory.setBus(serverFactory.getBus());
        manager.registerBindingFactory(JAXRSBindingFactory.JAXRS_BINDING_ID,
factory);
        Server server = serverFactory.create();


        LOGGER.info("Server Started on URL http://10.30.9.56:9000/os";);
}

Resource Class
=========

@Path("/v3")
public class IdentityService {

    @POST
    @Path("/token")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response createToken(TokenRequest token){

        TokenResponse tokenResponse = new
TokenResponse("we54er4564355re645654",
Arrays.asList("identity:http://10.1.2.4:4000","compute:http://10.1.2.4:5000";));

        return Response.ok(tokenResponse).build();
    }
}

Request POJO
=========

@JsonRootName("tokenRequest")
public class TokenRequest {

    private String accessKey;

    private String password;

    // getters and setters
}


Request Sent
========

POST /v3/token (Content-Type : application/json) { "accessKey": "kasun",
"password": "secret" }



--
View this message in context: 
http://cxf.547215.n5.nabble.com/CXF-REST-Server-does-not-pick-JacksonJsonProvider-tp5750919.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to