球衣尝试返回XML时返回500 [英] jersey return 500 when trying return an XML
问题描述
我在使用Jersey 2.29时遇到问题.简单的例子.我设法返回了纯文本,但是如果我尝试返回XML,则会出现500错误.
I have a problem with using Jersey 2.29. Its simple example. I managed to return text-plain, but if I trying return XML i get 500 error.
我的步骤:
启动服务器.转到 http://localhost:8080/demorest/webapi/aliens
.一世我要500.
Start server. Go to http://localhost:8080/demorest/webapi/aliens
. I
I'll get 500.
当我重写此示例以返回纯文本时,一切正常.但是使用XML是个问题.
when I rewrote this example to return text-plain, everything was ok. But with XML is a problem.
我看着这里: Jersey在尝试返回XML响应时返回了500 一个>但这对我不起作用.
I looked here: Jersey returns 500 when trying to return an XML response But its not work to me.
web.xml
<?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.test.demorest</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>
Alien.java
Alien.java
package com.test.demorest;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Alien {
private String name;
private int points;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPoints() {
return points;
}
public void setPoints(int points) {
this.points = points;
}
}
AlienResource.java
AlienResource.java
package com.test.demorest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("aliens")
public class AlienResource {
@GET
@Produces(MediaType.APPLICATION_XML)
public Alien getAlien() {
System.out.println("getAlien called...");
Alien a1 = new Alien();
a1.setName("Adam");
a1.setPoints(23);
return a1;
}
}
推荐答案
将此添加到pom.xml中的依赖项
Add this to the dependencies in your pom.xml
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0-b170201.1204</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.0-b170127.1453</version>
</dependency>
这篇关于球衣尝试返回XML时返回500的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!