代码之家  ›  专栏  ›  技术社区  ›  Rilcon42

WildFly无法找到完整路径的资源(没有XML,使用命令行部署)

  •  0
  • Rilcon42  · 技术社区  · 9 年前

    当我尝试访问时: http://localhost:8080/HelloWorld-1.0-SNAPSHOT/json/hi

    错误消息:

    12: 27:04159错误[org.jboss.resteasy.resteasy\u jaxrs.i18n](默认任务1)RESTEASY002010:无法执行:javax.ws.rs.NotFoundException:RESTEASY003210:无法找到完整路径的资源: http://localhost:8080/HelloWorld-1.0-SNAPSHOT/json/hi

    package com.sentiment360.helloworld;
    
    import javax.ws.rs.ApplicationPath;
    import javax.ws.rs.core.Application;
    
    @ApplicationPath("/")
    public class JAXActivator extends Application {
    }
    

    web.xml

    <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_3_0.xsd"
        id="WebApp_ID" version="3.0">
    
        <display-name>hello</display-name>
    
    </web-app>
    

    索引.html

    <!DOCTYPE html>
    <html>
        <head>
            <title>Start Page</title>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        </head>
        <body>
            <h1>Hello World WOO!</h1>
        </body>
    </html>
    

    package com.sentiment360.helloworld;
    
    import javax.inject.Inject;
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.PathParam;
    import javax.ws.rs.Produces;
    
    public class HelloWorld {
        //@Inject
        //HelloService helloService;
    
    @GET
    @Path("/json/{p}")
    @Produces({ "application/json" })
    public String getHelloWorldJSON(@PathParam("p") String param) {
        return "{\"result\":\"" + param + "\"}";
        //return "{\"result\":\"" + helloService.createHelloMessage(param) + "\"}";
    }
    
    @GET
    @Path("/xml/{p}")
    @Produces({ "application/xml" })
    public String getHelloWorldXML(@PathParam("p") String param) {
        return "<xml><result>" +param+ "</result></xml>";
        //return "<xml><result>" + helloService.createHelloMessage(param) + "</result></xml>";
    }
    }
    

    pic to show my directory directory structure

    WildFly服务器命令

    端子1:

    /etc/opt/wildfly-10.0.0.Final/bin/standalone.sh

    /etc/opt/wildfly-10.0.0.Final/bin/jboss-cli.sh --connect --command="deploy --force /home/king/NetBeansProjects/HelloWorld/target/HelloWorld-1.0-SNAPSHOT.war"

    2 回复  |  直到 9 年前
        1
  •  3
  •   stdunbar    9 年前

    这并不明显,但我从来没有能够在JAX-RS内容的相同路径上拥有静态内容。更改您的 JAXActivator.java 文件的路径如下 /rest 或者你想要的任何东西。最终,当请求传入时,Wildfly需要确定如何路由它。现在,您的服务从 / 但静态内容也是如此。在服务和静态之间划分URL空间,您就不会遇到这个问题。

    编辑:

    package com.sentiment360.helloworld;
    
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.PathParam;
    import javax.ws.rs.Produces;
    
    @Path("/hello")
    public class HelloWorld {
    
        @GET
        @Path("/json/{p}")
        @Produces({"application/json"})
        public String getHelloWorldJSON(@PathParam("p") String param) {
            return "{\"result\":\"" + param + "\"}";
        }
    
        @GET
        @Path("/xml/{p}")
        @Produces({"application/xml"})
        public String getHelloWorldXML(@PathParam("p") String param) {
            return "<xml><result>" + param + "</result></xml>";
        }
    }
    

    并将该路径包含在URL中,它可以正常工作。我承认,我的服务上总是有额外的类级别路径来帮助确定它们的范围,但我认为这不是必需的。我还得学点东西。

    编辑2:

        2
  •  0
  •   caisil    9 年前

    • web.xml

    有两种方法可以配置REST服务:

    • Application
    • 使用 @Path 注释。

    你指的是这个 tutorial


    无法找到完整路径的资源: http://localhost:8080/HelloWorld-1.0-SNAPSHOT/json/hi

    我认为web容器将此URL视为静态页面,而不是servlet。因此,相应的REST路径(/json/hi)将不会得到请求。