API RESTFul com Json

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.

Alguém?

Boa Tarde
BrunoSC,

Há alguma especificação para se utilizar EJB? Se for afim de curiosidade sugiro partir para o Spring Boot é simples e atende até o nivel de hypermedia do rest. Mas em todo caso qual a necessidade de utilizar o bean?

att,

1 curtida

Estava fazendo somente alguns testes.

Vou brincar com o Spring Boot para ver então.

Valeu, abraços.