Olá,
Estou tentando criar uma API REST que consome/produz JSON.
Primeiramente fiz os endpoints REST e funcionou corretamente (consumir e produzir Json).
Como vou utilizar EJB, adicionei o beans.xml na WEB-INF. Após isso, o consumo do JSon começou a dar o seguinte erro:
[com.sun.jersey.spi.container.ContainerResponse] (default task-4) The RuntimeException could not be mapped to a response, re-throw
ng to the HTTP container: org.jboss.resteasy.spi.LoggableFailure: RESTEASY003880: Unable to find contextual data of type: javax.ws.rs.ext.Providers
[io.undertow.request] (default task-4) UT005023: Exception handling request to /minha-api/v1/hello: org.jboss.resteasy.spi.Loggable
Failure: RESTEASY003880: Unable to find contextual data of type: javax.ws.rs.ext.Providers
Meu resource:
@Path("/hello")
public class HelloWorldResource {
@POST
@Path("/")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String insert(Resultado r) {
// Soh para ver se esta chegando
System.out.println("INSERT !!!");
return r;
}
}
web.xml
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/v1/*</url-pattern>
</servlet-mapping>
pom.xml
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxrs
http://cxf.apache.org/schemas/jaxrs.xsd">
<jaxrs:server id="providerService" address="/">
<jaxrs:providers>
<bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider"/>
</jaxrs:providers>
</jaxrs:server>
</beans>
Quando estou subindo o WildFly, aparece no log:
17:23:34,390 INFO [com.sun.jersey.api.core.ScanningResourceConfig] (ServerService Thread Pool -- 144) Provider classes found:
class org.codehaus.jackson.jaxrs.JacksonJsonProvider
class org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider
class org.codehaus.jackson.jaxrs.JsonMappingExceptionMapper
class org.codehaus.jackson.jaxrs.JsonParseExceptionMapper
Se eu removo o beans.xml funciona corretamente, ou seja, faço uma chamada POST passando JSon e chega no Java corretamente.
Agora se eu volto o beans.xml, o erro ocorre.
Minha dúvida é: O que eu poderia por no beans.xml? (o conteúdo que postei foi de testes que fiz, inicialmente estava em branco)
Acredito que eu esteja fazendo confusão, mas não consegui identificar o problema.