Не могу найти ресурс REST - PullRequest
0 голосов
/ 04 января 2019

Итак, я пытаюсь разработать веб-приложение с именами Java-классов "Service.java", которое является моим REST-сервисом.

@Path("/service")
public class Service {

    @Context
    HttpServletRequest request;
    @Context
    ServletContext ctx;

    @GET
    @Path("/getJustAdministrators")
    @Produces(MediaType.APPLICATION_JSON)
    public Collection<Administrator> getJustAdministrators() {
        System.out.println("get administrators");
        return getAdministrators().getValues();
    }

    private Administrators getAdministrators() {
    Administrators administrators = (Administrators) ctx
            .getAttribute("administrators");
    if (administrators == null) {
        administrators = new Administrators(ctx.getRealPath(""));
        ctx.setAttribute("administrators", administrators);
    }
    return administrators;
}

Мой файл main.js, связанный с моей страницей приветствия, выглядит следующим образом:

var rootURL1 = "../eTicket/rest/service/getJustAdministrators";

loadAdministrators();

function loadAdministrators() {
    console.log('loadAdministrators');
    $.ajax({
        type : 'GET',
        url : rootURL1,
        dataType : "json", // data type of response
        success : function(data) {
            alert(data);
        }
    });
}

И я получаю сообщение об ошибке «осмотреть», как это:

http://localhost:8080/eTicket/rest/service/getJustAdministrators 404 (не найдено)

Мой файл 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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>eTicket</display-name>
  <welcome-file-list>
    <welcome-file>start.html</welcome-file>
  </welcome-file-list>
  <servlet>
        <servlet-name>Jersey REST Service</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>eTicket</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>

Почему он не может найти мой метод ресурса ??

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Определение вашего класса сервлетов неверно:

<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>

Он должен указывать на ваш класс Service.java.

Пожалуйста, используйте эту страницу как ссылку:

https://docs.oracle.com/cd/E13222_01/wls/docs92/webapp/configureservlet.html

0 голосов
/ 04 января 2019

Ваш подпуть может пытаться привязаться к корню, как и / service.

@Path("/getJustAdministrators")

Вы можете захотеть:

@Path("getJustAdministrators")

Или:

@Path("./getJustAdministrators")

Или даже более явно:

@Path("/service/getJustAdministrators")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...