当前位置: 首页 > 知识库问答 >
问题:

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

鞠子轩
2023-03-14

一段时间以来,我一直在阅读有关SO的线程,但我无法弄清楚这是WildFly部署问题还是RESTEASY问题。任何帮助都将不胜感激。

当我尝试访问时:<代码>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

JAXActivator。Java语言

package com.sentiment360.helloworld;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

@ApplicationPath("/")
public class JAXActivator extends Application {
}

网状物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>

你好世界Java语言

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>";
}
}

WildFly服务器命令

端子1:

<代码>/etc/opt/wildfly-10.0.0。最终/箱/独立。sh

端子2:

/etc/opt-10.0.0。Final/bin/jboss-cli.sh--connect--order="部署--force /home/king/NetBeansProjects/HelloWorld/target/HelloWorld-1.0-SNAPSHOT.war"

共有2个答案

云默
2023-03-14

问题:

  • 您似乎没有注册REST服务

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

  • 在应用程序类注册
  • 使用路径注释

请参阅本教程

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

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

查学文
2023-03-14

这并不明显,但我从来没有能够在JAX-RS内容的同一路径上拥有静态内容。将您的JAXActivator.java文件更改为具有/rest之类的路径或任何您想要的路径。最终,当一个请求出现在Wildfly中时,需要确定如何路由它。正如您现在拥有的那样,您的服务从/开始,但静态内容也是如此。在服务和静态之间划分您的URL空间,您就不会遇到这个问题。

编辑:

奇怪-我直接复制了你的代码,并且也在Ubuntu下运行。我有一个全新的Wildfly 10.1.0。最终。如果我按原样使用你的代码,我也会得到404。但是如果我在类上放一个@Path注释:

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:

嗯,我学到了一些东西——需要“根资源”声明(也就是类级别的@Path)。这就是为什么我的IDE告诉我,当我没有这个类时,它是未使用的。我一直这样做,但从来不知道它是必需的。在类级别的@Application ationPath和@Path之间,它都按预期工作。

 类似资料:
  • 我正在尝试在Quarkus中配置Swagger。Quarkus的我的版本:1.9.2。最终的 我的依赖关系: 和我的财产资源: 使用:mvn启动应用程序时,请编译quarkus:dev并转到以下url: <代码>http://localhost:8080/swagger-找不到ui\u/ 但是,如果我用maven(mvn包)制作一个包,然后启动jar,则返回相同的url: RESTEASY0032

  • 问题内容: 我几次在这里找到相同的问题,但是找不到答案。 当我运行我的应用程序时,我收到以下错误 这是项目的pom文件(我仅添加了主要部分) 这是我的web.xml文件 这是我的Test.java类 请告诉我我在哪里做错了?提前致谢 问题答案: 我没有机会测试您的版本(使用web.xml),说实话,当我使用Resteasy 时,我对 xml的使用不多,所以我不会去尝试解释什么是错误的(如果有的话)

  • 要执行一个jar命令,请使用>Java-jar jar-file-name.jar 如果JAVA_HOME版本与使用构建的jar文件的JDK版本匹配,则工作很好。否则会给出以下错误。 我有一个在JDK1.8中构建的第三方jar,在这个JDK上我没有任何控制权来更改和重建JDK版本。 我有一台unix机器,其中的JAVA_HOME设置为JDK1.5。而我的应用程序是部署在同一台机器中的其他几个应用程

  • 使用Spring护套。我正在尝试使用Apache POI库解析项目中本地存储的excel文件。我的目录结构如下: > src > 主要 > java语言 com.app 控制器 模型 存储 库 资源 静态 测试.xlsx 我已经尝试了以上两种访问文件的方法,并且尝试了许多不同的文件路径,但是都没有效果。我没有得到构建错误或运行时错误,只是没有找到文件,当我试图调用该方法时,我在那一行得到一个Nul

  • 为了能够在远程服务器上执行一些XSLT转换,我在CentOS7上(使用yum)安装了saxon和saxon-scripts。 在我的本地计算机(Mac)上执行以下操作: 工作顺利。Centos上的相同命令会给我: 我看过从命令行运行XSLT和从Saxon文档中使用XML编录,但其中的解释远远超出了我的水平。 有没有可能忽略这个目录管理器业务,而在没有它的情况下从命令行执行转换?一个人会怎么做呢?

  • 问题内容: 许多人会发现这是重复的问题,但是在询问有关此主题的内容之前,我已经经历了所有问题,但没有一个对我有用。 到目前为止,我想使用ls命令打印某些文件格式的完整路径名,到目前为止,我发现了将打印目录中所有文件但不是完整路径的代码块。 这将打印出所有根目录和子目录下的文件。 输出: 我想要像这样的输出: 编辑: 我已经使用了这一切,但它不适用于我在LUA中的代码。 当我与代码一起使用时,它显示