MessageBodyWriter pas trouvé le type de support={application/xml, q=1000} - Jersey + Jaxb
Je suis en train d'écrire un service web RESTful avec Jersey. Je souhaite retourner un objet personnalisé en forme XML pour les consommateurs. L'erreur que je reçois est:
MessageBodyWriter pas trouvé le type de support={application/xml, q=1000}, type=classe com.test.ws.Employé, genericType=classe com.test.ws.De l'employé.
Ci-dessous le code:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>com.vogella.jersey.first</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<!-- Register resources and providers under com.vogella.jersey.first package. -->
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.test.ws</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Classe De Service
package com.test.ws;
@Path("/hello")
public class Hello {
@GET
@Path("/sayHello")
@Produces(MediaType.APPLICATION_XML)
public Employee sayHello() {
Employee employee = new Employee();
employee.setEmpId(1);
employee.setFirstName("Aniket");
employee.setLastName("Khadke");
return employee;
}
}
Employee.java
package com.test.ws;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "employee")
public class Employee {
public String firstName;
public String lastName;
public int empId;
public Employee(String firstName, String lastName, int empId) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.empId = empId;
}
public Employee() {
super();
}
@XmlElement
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@XmlElement
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@XmlElement
public int getEmpId() {
return empId;
}
public void setEmpId(int empId) {
this.empId = empId;
}
}
Et voici la liste des bibliothèques ajouté:
Quelqu'un peut m'aider?
- ajouter implémente Serializable des Employés de la classe
Vous devez vous connecter pour publier un commentaire.
Je crois que votre erreur est dans le web.xml. Essayez de changer votre part dans votre web.xml.
Une solution à votre problème est de créer un personnalisé
javax.ws.rs.core.Application
ouorg.glassfish.jersey.server.ResourceConfig
. Il semble que votre serveur ne détecte pas vos fournisseurs pour la fabrication en série. Par la mise en œuvre de votre propreApplication
, vous serez en mesure de spécifier le fournisseur que vous souhaitez utiliser. pour votre exemple, ce que vous pourriez avoir à faire :MyApplication.java
Et ajouter l'application dans votre fichier de déploiement :
web.xml
Employé de classe implémente l'interface Serializable
J'ai été en mesure de résoudre le problème moi-même. C'est à cause de conflit entre les pots inclus dans le build path. Ici est le composant logiciel enfichable pour les fichiers jar.
- Je gérer un projet ancien qui j'ai besoin d'ajouter un service web REST. Ils n'ont pas de Maven.
Pour le jersey 2.25, la dernière compilé avec le SDK Java 1.7, j'ai résolu en ajoutant pot
jersey-media-jaxb-2.25.jar