RESTfull API не печатает содержимое по определенному пути, используя инфраструктуру джерси и сервер Apache Tomact - PullRequest
0 голосов
/ 27 января 2019

Я новичок в программировании, я пытаюсь создать свой первый RESTfull API.Я создал сервер с Apache Tomcat / 8.5.37 и использовал веб-сервисы RESTfull.Моя проблема заключается в том, что содержимое класса (XML) не распечатывается на локальном хосте: 8080 с использованием пути http://localhost:8080/JavaAPI/rest/hello

Я создал сервер Tomcat и использовал JAX-RS 2.0 / Jersey 2.25.x и JAX-RS 2.1/ Джерси 2.26+ в случае проблем с версиями, ни одна из них не работает.Я просто не могу понять, в чем может быть проблема.

package test;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Application;

@Path("/hello")

public class Hello {

    @GET
    @Produces(MediaType.TEXT_XML)
    public String sayHello(){
        String resource ="<? xml version='1.0' ?>" +
                "<hello>, Hi, its  XML</hello>";
        return resource;
    }
}

Это конфигурация файла службы REST:

<display-name>JavaAPI</display-name>
  <servlet>
    <servlet-name>JAVA API</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
    <param-name>jersey.config.server.provider.packages</param-name>
    <param-value>test</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup> 
  </servlet>
    <servlet-mapping>
     <servlet-name>JAVA API</servlet-name>
     <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>
</web-app>

Это скриншот библиотеки текущего джерси:

lib libcont

Ожидаемый результат должен быть: Привет, его XML будет напечатан на http://localhost:8080/JavaAPI/rest/hello, и я получу следующее 404ошибка: Тип: Отчет о состоянии

Сообщение: не найдено

Описание: Исходный сервер не нашел текущее представление для целевого ресурса или не хочет раскрыть, что он существует.

Причина, по которой этот вопрос может не дублироваться: во-первых, я скопировал / вставил их код вместе с майками старой версии 1.x, и проблема все еще остается.По своему опыту я считаю, что существует проблема с управлением версиями, так как я использую Tomcat 8.5, и я также получаю следующий ответ от сервера:

Tomcaterr Tomcaterrcont

Руководство, которому я следовал: https://www.youtube.com/watch?v=5jQSat1cKMo&t=782s&list=LL2fRfBs2m2v1wyy_kKt8E9w&index=2

1 Ответ

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

Попробуйте изменить конфигурацию init-param следующим образом.

<init-param>
    <param-name>com.sun.jersey.config.property.packages</param-name>
    <param-value>Test</param-value>
</init-param>

Также рассмотрите возможность изменения имени пакета в соответствии с соглашениями об именах Java:

Пакеты: префикс уникального пакетаимя всегда пишется строчными буквами ASCII и должно быть одним из доменных имен верхнего уровня, таких как com, edu, gov, mil, net, org.Последующие компоненты имени пакета различаются в соответствии с собственными внутренними соглашениями об именах.

Примеры:

com.sun.eng
com.apple.quicktime.v2

// java.lang packet in JDK
java.lang

Проблема также в отображении.Попробуйте проверить

http://localhost:8080/JavaAPI/hello

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...