titledborder seticon setborder icon change java json rest javafx response

setborder - seticon java



Los lectores de cuerpo de mensaje registrados compatibles con el tipo de medio MIME son: application/json; charset=UTF-8 (2)

El error indica que JerseyClient puede no haber sido configurado correctamente para escanear paquetes de proveedores. Verifique su web.xml si la propiedad ''jersey.config.server.provider.packages'' está configurada para incluir el paquete ''com.prom.via.rest.dto'' que contiene sus clases JAXB.

<servlet-name>Jersey REST Service</servlet-name> <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> <!-- Register resources and providers under com.prom.via.rest.dto package. --> <init-param> <param-name>jersey.config.server.provider.packages</param-name> <param-value>com.prom.via.rest.dto</param-value> </init-param> </servlet>

Además, como SkyWalker indicó, verifique si RedeemTransactionDetails está anotado con la anotación @XmlRootElement o no.

Estoy usando Spring Rest API en el servidor y jersey API en el lado del cliente.

Estoy creando una pantalla donde buscará las últimas 5 transacciones de canje del cliente.

Desde el lado del servidor, devuelvo la lista de RedeemTransactionDetails y acepto lo mismo en el lado del cliente.

He depurado el código del lado del servidor, devuelve la lista válida, y en el lado del cliente el código de respuesta es 200, mientras que al obtener la entidad obtengo un error del lado del cliente.

Lado del servidor:

@RestController @RequestMapping("/rest/api") public class CustomerRestController { @Autowired private CustomerService customerService; @RequestMapping(value="/redeemTransactionList/{clientId}/{mobileNumber}/{numOfTransaction}" , method=RequestMethod.POST , produces = "application/json; charset=UTF-8") public @ResponseBody List<RedeemTransactionDetails> redeemTransaction(@PathVariable(value = "clientId") int clientId, @PathVariable(value = "mobileNumber") String mobileNumber , @PathVariable(value="numOfTransaction") int numOfTransaction) { LOG.debug("We are in redeemTransaction method for user {} " , clientId); List<RedeemTransactionDetails> redeemList = null ; try { redeemList = customerService.redeemTransactionList(clientId, mobileNumber,numOfTransaction); } catch (Exception e) { LOG.debug("Excption while fetching redeemTransaction "); } return redeemList; } }

Lado del cliente :

public List<RedeemTransactionDetails> getRedeemTransactions(String mobileNumber, String clientId, String numberOfTransaction) { log.debug("inside authenticate() "); List<RedeemTransactionDetails> result = null; try{ webResource = client.resource(uri + "/redeemTransactionList").path(clientId).path(mobileNumber).path(numberOfTransaction) ; ClientResponse response = webResource.type(MediaType.APPLICATION_JSON).post(ClientResponse.class); if (response.getStatus() != 200) { log.debug("response.getStatus() : " + response.getStatus() ); throw new RuntimeException("Failed : HTTP error code : " + response.getStatus()); } response.getType() ; result = (List<RedeemTransactionDetails>) response.getEntity(RedeemTransactionDetails.class); log.debug("user Details " + result); } catch(Exception e){ log.debug(e); } return result ; } }

NOTA: He utilizado las siguientes dependencias en el archivo pom xml

<dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-json</artifactId> <version>1.19.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.6</version> </dependency>

EDITAR:

REGISTRO DE ERRORES

SEVERE: A message body reader for Java class com.prom.via.rest.dto.RedeemTransactionDetails, and Java type class com.prom.via.rest.dto.RedeemTransactionDetails, and MIME media type application/json;charset=UTF-8 was not found Feb 23, 2017 4:52:17 PM com.sun.jersey.api.client.ClientResponse getEntity SEVERE: The registered message body readers compatible with the MIME media type are: */* -> com.sun.jersey.core.impl.provider.entity.FormProvider com.sun.jersey.core.impl.provider.entity.StringProvider com.sun.jersey.core.impl.provider.entity.ByteArrayProvider com.sun.jersey.core.impl.provider.entity.FileProvider com.sun.jersey.core.impl.provider.entity.InputStreamProvider com.sun.jersey.core.impl.provider.entity.DataSourceProvider com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General com.sun.jersey.core.impl.provider.entity.ReaderProvider com.sun.jersey.core.impl.provider.entity.DocumentProvider com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General com.sun.jersey.core.impl.provider.entity.EntityHolderReader


Este problema es un problema conocido y varias respuestas ya están disponibles en .

Ahora le sugiero que siga algunas sugerencias para resolver su problema.

Sugerencia n. ° 1:

Puede agregar el archivo genson jar usando la siguiente dependencia en su archivo pom.xml

<dependency> <groupId>com.owlike</groupId> <artifactId>genson</artifactId> <version>1.4</version> </dependency>

La documentación se puede encontrar en: https://owlike.github.io/genson/

Luego, limpie su proyecto y compile y luego ejecute.

Enlace de recursos: https://.com/a/25754441/2293534

Sugerencia n. ° 2:

Puede agregar el archivo jersy bundle jar en su archivo pom.xml.

<dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-bundle</artifactId> <version>1.19.3</version> </dependency>

Esto también puede resolver el problema algunas veces.

Enlace de recursos: https://.com/a/23192776/2293534

Sugerencia n. ° 3:

Verifique que su entidad contiene anotaciones de @XmlRootElement o no. Si no, entonces por favor agrégalo.

Enlace de recursos: https://.com/a/7388605/2293534

Sugerencia # 4:

¡jonbros sugirió que, en lugar de usar el complemento de ensamblaje para maven, utilizara el plugin de sombras!

Puede leer el problema de lectura y la solución completa desde aquí: http://jersey.576304.n2.nabble.com/issue-with-POST-when-packaging-into-jar-td5460103.html

Enlace de recursos: https://.com/a/4955831/2293534