404错误:无法调用非常简单的休息Web服务的基本方法

时间:2016-08-19 11:07:26

标签: java rest resteasy jboss-eap-7

我尝试在家中实施一个简单的休息网络服务,以便学习这项技术。

我使用最新版本的JBoss EAP:7。 我在Java 8下创建了一个Maven项目。 部署没问题但是当我想调用我的REST Web服务的方法时,我有404错误。

我按照规范和教程进行操作。

1)我创建一个名为 bddsorties 的WAR 在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)我有另一个类,我的Web服务用@Path注释: 的 @Path( “ACCUEIL”)

4)在这个名为HelloWorld的Web服务类中,有一个基本方法,我想用注释 @路径(的 “HelloWorld”)

@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文件,但是空的。

3 个答案:

答案 0 :(得分:1)

通过App展示您的资源类,如下所示:

@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(&#34; / accueil&#34;)

答案 1 :(得分:0)

尝试声明这样的@Path注释: @Path(“/ accueil”)和@Path(“/ helloworld”)

答案 2 :(得分:0)

保留路径中的war文件名: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之外,我在WEB-INF目录中有一个带有此内容的beans.xml:

<?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设置为annotated,不再需要web.xml。