Я работаю над простым RESTful API, используя Jersey 2.10 и работая на Tomcat 8.
это мой класс Application:
package com.manager.api.application;
import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;
@ApplicationPath ("api")
public class Application extends ResourceConfig {
public Application () {
packages ("com.manager.api.resources");
}
}
Мой пакет Ресурсы содержит:
интерфейс: Resources.java
package com.manager.api.resources;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
public interface Resources {
@GET
@Produces (MediaType.APPLICATION_JSON)
public JsonObject getList ();
@GET
@Path ("value=/{id}")
@Produces (MediaType.APPLICATION_JSON)
public JsonObject get (String id);
@POST
@Path ("value=/{data}")
@Consumes (MediaType.APPLICATION_JSON)
public void post (JsonObject data);
@PUT
@Path ("value=/{data}")
@Consumes (MediaType.APPLICATION_JSON)
public void put (JsonObject data);
@DELETE
@Path ("value=/{id}")
public void delete (String id);
}
Абстрактный класс: ResourcesImpl.java, который реализует интерфейс Resources.
package com.manager.api.resources;
public abstract class ResourcesImpl implements Resources {
}
И, наконец, класс ресурсов, который расширяет ResourcesImpl.java: UserResources.java
package com.manager.api.resources;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.manager.api.dao.UserDao;
@Path ("value=/users")
public class UserResources extends ResourcesImpl {
private UserDao user = new UserDao ();
@GET
@Path ("value=/test")
@Produces (MediaType.TEXT_PLAIN)
public String Test () {
return "Test";
}
@Override
public JsonObject getList () {
return user.getList ();
}
@Override
public JsonObject get (String id) {
return user.get (id);
}
@Override
public void post (JsonObject data) {
user.post (data);
}
@Override
public void put (JsonObject data) {
user.put (data);
}
@Override
public void delete(String id) {
user.delete (id);
}
}
и мой web.xml содержит только тег <display-name>:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>manager-api</display-name>
</web-app>
Я успешно запускаю свой проект, но получаю 2 проблемы:
Обнаружены следующие предупреждения: ПРЕДУПРЕЖДЕНИЕ. Метод HTTP GET, общедоступный JsonObject com.manager.api.resources.UserResources.get(java.lang.String), не должен использовать никакой объект. : что мне кажется странным, так как я поставил @Produces (MediaType.APPLICATION_JSON) и не поставил @Consumes для этого метода.
Наконец, большой проблемой является ошибка 404, которую я получаю, когда набираю: http://localhost:8080/manager-api/api/users/test, когда он должен печатать Test в виде текста.
Есть ли у вас какие-либо идеи о том, что является причиной этих 2 ошибок? Спасибо.
<servlet-mapping>или<filter-mapping>в вашем файле web.xml? - person Xinzz   schedule 30.06.2014@ApplicationPathдля аннотации пользовательского подкласса Application и определения URI базового приложения для всех ресурсов JAX-RS, настроенных в приложении. jersey.java.net/documentation/latest/deployment.html - person   schedule 30.06.2014