I have a restful service (post) that consumes (application/json) and produces (application/json). The single param for this service is an annotated java object.
I am using org.jboss.resteasy.client.ClientRequest to send the request to the service. However, I am getting this exception in the client end and the exception:
could not find writer for content-type application/json type.
Does this mean that I am missing some library jars or I have to write my own writer for application/json?
I am using resteasy 2.3.3.Final
Here are various dependencies I added to my pom that I think are probably related:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>2.3.3.Final</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxb-provider</artifactId>
<version>2.3.4.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
<version>2.3.4.Final</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson-mapper-asl.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${jaxb-api.version}</version>
<scope>runtime</scope>
</dependency>
This is just more than enough.
Refer here: http://howtodoinjava.com/2012/12/15/how-to-write-restful-webservices-using-spring-3-mvc/
If you plan to use newer versions of resteasy that implement JAX-RS 2.0, the following dependencies should solve your problem:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.5.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>jaxrs-api</artifactId>
<version>3.0.5.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxb-provider</artifactId>
<version>3.0.5.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>3.0.5.Final</version>
</dependency>
I am using all libraries included (maven project), but still when running as standalone application, generated by maven-assembly-plugin
, I got same error, but when running from IDE it works without problem.
I also had problem with log4j2 logging as it was completely broken when running as standalone fat jar application (in IDE works perfectly), so I first focus on solving this:
Log4j2 configuration not found when running standalone application builded by shade plugin
So I solved problem with missing provider and log4j2 by migrating from maven-assembly-plugin
to maven-shade-plugin
If you have all necessary dependencies applied in your project, check if your class implements Serializable.
@XmlRootElement
public class MyClass implements Serializable {
//filds
}
Maybe it solve your problem.