2016-05-22 12 views
1

Ich versuche List<MessageDTO> in Form von XML zu senden 2 unter Verwendung von Jersey, aber immer die folgenden Ausnahme:java.lang.ClassCastException beim Senden von Daten in JAX-RS

javax.servlet.ServletException: java. lang.ClassCastException: org.glassfish.jersey.message.internal.OutboundJaxrsResponse nicht

hier zu java.util.List gegossen ist meine messagesDTO Klasse:

@XmlRootElement 
public class messagesDTO implements java.io.Serializable { 

    private static final long serialVersionUID = 1L; 

    @XmlAttribute 
    Long id; 

    @XmlElement 
    String message; 

    @XmlElement 
    String author; 

    @XmlElement 
    Date date; 

    public Long getId() { 
     return id; 
    } 

    public void setId(Long id) { 
     this.id = id; 
    } 

    public String getMessage() { 
     return message; 
    } 

    public messagesDTO(Long id, String message, String author, Date date) { 
     // super(); 
     this.id = id; 
     this.message = message; 
     this.author = author; 
     this.date = new Date(); 
    } 

    public void setMessage(String message) { 
     this.message = message; 
    } 

    public String getAuthor() { 
     return author; 
    } 

    public void setAuthor(String author) { 
     this.author = author; 
    } 

    public Date getDate() { 
     return date; 
    } 

    public void setDate(Date date) { 
     this.date = date; 
    } 

    public messagesDTO() { 
     super(); 
    } 
} 

Und meine JAX-RS-Ressourcenklasse:

@Path("/messages1") 
public class MessageResources { 

    @GET 
    @Produces(MediaType.APPLICATION_XML) 
    public List<messagesDTO> getMessage() { 

     MessageServices obj = new MessageServices(); 
     List<messagesDTO> res = obj.getAllMessages(); 
     return (List<messagesDTO>) Response.ok().entity(res).build(); 
    } 
} 

Meine web.xml Datei:

<?xml version="1.0" encoding="UTF-8"?> 
<!-- This web.xml file is not required when using Servlet 3.0 container, 
    see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html --> 
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <servlet> 
     <servlet-name>Jersey Web Application</servlet-name> 
     <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
     <init-param> 
      <param-name>jersey.config.server.provider.packages</param-name> 
      <param-value>com.messages.MessaseApp</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Jersey Web Application</servlet-name> 
     <url-pattern>/webapi/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

Und meine pom.xml Datei:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.messages</groupId> 
    <artifactId>MessaseApp</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 

    <name>MessaseApp</name> 

    <build> 
     <finalName>MessaseApp</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.5.1</version> 
       <inherited>true</inherited> 
       <configuration> 
        <failOnMissingWebXml>false</failOnMissingWebXml> 
        <source>1.7</source> 
        <target>1.7</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.glassfish.jersey</groupId> 
       <artifactId>jersey-bom</artifactId> 
       <version>${jersey.version}</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 

    <dependencies> 
     <dependency> 
      <groupId>org.glassfish.jersey.containers</groupId> 
      <artifactId>jersey-container-servlet-core</artifactId> 
      <!-- use the following artifactId if you don't need servlet 2.x compatibility --> 
      <!-- artifactId>jersey-container-servlet</artifactId --> 
     </dependency> 
     <!-- uncomment this to get JSON support <dependency> <groupId>org.glassfish.jersey.media</groupId> 
      <artifactId>jersey-media-moxy</artifactId> </dependency> --> 
    </dependencies> 
    <properties> 
     <jersey.version>2.22.2</jersey.version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
</project> 
+2

Bitte [Bearbeiten] Ihre Frage ein und schließen die relevanten Teile Ihrer Code. Verknüpfen Sie keine externen Pasten. –

+2

Nochmals: Bitte [bearbeiten] Sie Ihren Code. Wir werden nicht durch vier externe Pasten graben. –

+0

Nur zurück "res" –

Antwort

2

Ihre Besetzung ist falsch und Sie nicht, dass müssen.

Versuchen Sie eine der folgenden (achten Sie auf die Rückgabetyp der Methode und der Art, die zurückgegeben wird):

@GET 
@Produces(MediaType.APPLICATION_XML) 
public List<messagesDTO> getMessage() { 
    MessageServices obj = new MessageServices(); 
    List<messagesDTO> res = obj.getAllMessages(); 
    return res; 
} 
@GET 
@Produces(MediaType.APPLICATION_XML) 
public Response getMessage() { 
    MessageServices obj = new MessageServices(); 
    List<messagesDTO> res = obj.getAllMessages(); 
    return Response.ok().entity(res).build(); 
}