Rest Java status 500 internal error

OK, so I'm writing a rest server in Java and trying to test it, but I've been receiving error code 500. Please help I've stepped through the code and know that it uses the ArrayList of the correctly formatted dataclass object to reach the bottom of this method (I've checked them and haven't successfully run the rest front end)

This is the rest method I'm calling

@GET
    @Produces(MediaType.APPLICATION_XML)
    public List<DataClass> receiveXML(
            @DefaultValue("null") @QueryParam("artist") String artist,@DefaultValue("null") @QueryParam("title") String title,@DefaultValue("null") @QueryParam("album") String album,@DefaultValue("null") @QueryParam("genre") String genre,@DefaultValue("null") @QueryParam("type") String type,@DefaultValue("false") @QueryParam("open") Boolean open,@DefaultValue("false") @QueryParam("close") Boolean close,@DefaultValue("noPath") @QueryParam("path") String path,@DefaultValue("noKey") @QueryParam("key") String key,@DefaultValue("null") @QueryParam("show") String show,@DefaultValue("null") @QueryParam("season") String season,@DefaultValue("null") @QueryParam("format") String format)
    {   

        if(!artist.equals("null"))
            this.artist = artist;
        if(!title.equals("null"))
            this.title = title;
        if(!album.equals("null"))
            this.album = album;
        if(!genre.equals("null"))
            this.genre = genre;
        if(!type.equals("null"))
            this.type = type;
        if(!open.equals("false"))
            this.open = open;
        if(!close.equals("false"))
            this.close = close;
        if(!path.equals("noPath"))
            this.path = path;
        if(!key.equals("noKey"))
            this.keyword = key;
        if(!show.equals("null"))
            this.show = show;
        if(!season.equals("null"))
            this.season = season;
        if(!format.equals("null"))
            this.format = format;

        MultivaluedMap<String,String> queryParams = buildMap();
        List<DataClass> resp = receive(queryParams);
        return resp;    
    }

This is a dataclass

@XmlRootElement
public class DataClass {
    public String pathname;
    ArrayList<String> parsedSet;
    ResultSet resultSet;
    public String id,path,type,category,size,update,idMeta,title,description;
    public String genre,album,artist,show,season;

    public DataClass(ResultSet resultSet){
        this.resultSet = resultSet;
        parsedSet = new ArrayList<String>();
        setStringVariables();
    }
    /**
     * Sets the pathname variable of the local file to be returned
     * @param pathname
     */
    public DataClass(String pathname){
        this.pathname = pathname;
    }


        methods to set the fields...

}

Here's how I call the server. I know the server is being called correctly because I have a test method that returns only strings

public static void testXML() {
    //a map that adds parameters that will then be added to the the WebService
    MultivaluedMap<String,String> queryParams = new MultivaluedMapImpl();
    queryParams.add("type","music");
    //retrieve info for an artist in XML format
    System.out.println(service.path("rest").path("media").queryParams(queryParams).accept(
            MediaType.APPLICATION_XML).get(String.class));
}

This is my mistake

Exception in thread "main" com.sun.jersey.api.client.UniformInterfaceException: GET http://localhost:8080/TigrisRESTServer/rest/media?type=music returned a response status of 500 Internal Server Error
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:676)
    at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
    at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:503)
    at tigris.restserver.client.ourClient.testXML(ourClient.java:45)
    at tigris.restserver.client.ourClient.main(ourClient.java:28)

Sorry, I forgot to include something

The class that defines receivexml has this capability

@Path("/media")
public class Server {
}

This is the web XML file

<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>RestServer</display-name>
  <servlet>
    <servlet-name>Tigris REST Server App</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>tigris.restserver.connection</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Tigris REST Server App</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>
</web-app>

This works (it just returns a string)

This is the customer

public static void testtest() {
    System.out.println(service.path("rest").path("media").accept(
            MediaType.TEXT_PLAIN).get(String.class));
}

This is the server side

@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayPlainTextHello() {
    return "Hello Server";
}

Thank you Twain 249

Solution

It seems that you forgot to include the path it should map

@Path("/rest/")

GET http://localhost:8080/TigrisRESTServer/rest/media?type=music

If you want to map URL / rest / that is

For example, see this link Jersey documentation

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>