Ошибка 404: невозможно вызвать базовый метод очень простой веб-службы отдыха

Я пытаюсь реализовать дома простой веб-сервис для отдыха, чтобы изучить эту технологию.

Я использую последнюю версию JBoss EAP: 7. Я создал под Java 8 проект Maven. Развертывание в порядке, но когда я хочу вызвать метод моей веб-службы REST, у меня возникает ошибка 404.

Я слежу за тем, что делать по спецификациям и учебнику.

1) Я создаю WAR с именем bddsorties. В pom у меня есть:

**<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
                <warName>sortiesbdd</warName>
            </configuration>
</plugin>**

2) У меня есть класс, который расширяет класс javax.ws.rs.core.Application: открытый класс App расширяет приложение. Этот класс имеет аннотацию: @ApplicationPath("/messorties")

@ApplicationPath("/messorties")
public class App extends Application
{
    public static void main( String[] args)
    {
        System.out.println( "Just the Main Class Here!" );
    }
}

3) У меня есть еще один класс, моя веб-служба с аннотацией @Path : @Path("accueil")

4) В этом классе веб-службы под названием HelloWorld есть базовый метод, который я хочу вызвать с аннотацией @Path(" привет мир")

@Path("accueil")
public class HelloWorld {

    @GET
    @Path("helloworld")
    public Response getHelloWorld() {
        String value = "Hello World Thomas in REST World";
        return Response.status(200).entity(value).build();
    }
}

Когда я хочу вызвать этот метод, набрав http://localhost:8080/sortiesbdd/messorties/accueil/helloworld, у меня ошибка 404 : Ошибка HTTP 404

Что не так в моем коде? ищу 2 дня, не могу найти решение. У меня вроде все нормально, но есть ошибка, которую я не могу найти.

Заранее спасибо, Томас

PS: Как я прочитал в документации JBoss, у меня есть файл web.xml, но пустой.


person Thomas Labege    schedule 19.08.2016    source источник


Ответы (3)


Предоставьте свои классы ресурсов через приложение, как показано ниже:

@ApplicationPath("/messorties")
public class App extends Application{

private final Set<Class<?>> classes;

public App(){

 classes = new HashSet<>();
    // add Resources
    classes.add(HelloWorld.class);
}

@Override
public Set<Class<?>> getClasses() {
    return classes;
}

}

Также объявите все свои аннотации @path, такие как @path("/accueil")

person Ranuka    schedule 30.11.2016

Вместо этого попробуйте объявить свои аннотации @Path следующим образом: @Path("/accueil") и @Path("/helloworld")

person Duran Wesley Harris    schedule 19.08.2016
comment
Спасибо Дюран. Я добавляю антислэш, но ошибка остается. Я не понимаю почему. - person Thomas Labege; 19.08.2016

оставьте имя файла войны из пути: http://localhost:8080/messorties/accueil/helloworld

изменить №1:

Я только что проверил один из своих проектов, которые я развертываю на Wildfly: у вас есть файл webapp/WEB-INF/jboss-web.xml?

У меня есть корень контекста, определенный там:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web version="8.0" xmlns="http://www.jboss.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/schema/jbossas/jboss-web_8_0.xsd">
  <context-root>/sortiebdd</context-root>
</jboss-web>

проверьте, есть ли у вас эта конфигурация, определяющая корень контекста.

изменить №2:

помимо jboss-web.xml у меня есть beans.xml в каталоге WEB-INF с этим содержимым:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
       bean-discovery-mode="annotated">
</beans>

У меня нет web.xml, потому что с beans.xml и bean-discovery-mode, установленным в аннотированный, web.xml больше не нужен.

person P.J.Meisch    schedule 19.08.2016
comment
Спасибо Питер за рассмотрение моей проблемы. Я удаляю имя файла войны. У меня тоже ошибка 404. - person Thomas Labege; 19.08.2016
comment
@ThomasLabege: я только что добавил к своему ответу, надеюсь, это поможет - person P.J.Meisch; 19.08.2016
comment
ОК, Питер. Большое спасибо. У меня нет такого файла. Я создам. - person Thomas Labege; 19.08.2016
comment
Питер, я добавил такой файл. Но проблема сохраняется. Я думаю, что вы поставили меня на правильный путь, на правильный путь: благодаря вам я догадываюсь, что это проблема конфигурации, а не проблема кодирования. Просто замечание: файлы web.xml и jboss-web.xml В каталоге WebContent/WEB-INF/. - person Thomas Labege; 19.08.2016
comment
У меня есть это в моем проекте maven в src/main/webapp/WEB-INF, это зависит от того, как настроен ваш проект maven. В конце концов, он должен оказаться в каталоге WEB-INF вашего файла войны, поэтому проверьте это. Может быть, это не упаковано в войну. - person P.J.Meisch; 19.08.2016
comment
Питер, вы абсолютно правы: у меня нет файлов web.xml и jboss-web.xml в моей войне, в каталоге WEB-INF. Я просто добавляю эти 2 файла вручную и повторяю попытку. У меня всегда ошибка. Я внимательно посмотрю файлы конфигурации. - person Thomas Labege; 19.08.2016
comment
проверьте мое редактирование с информацией о beans.xml; может быть, что web.xml у вас есть конфликты - person P.J.Meisch; 19.08.2016