gpt4 book ai didi

java - 在 Eclipse 中使用 J2EE Preview 运行时在 Java EE 中实现 RESTful 服务

转载 作者:行者123 更新时间:2023-12-01 13:45:38 25 4
gpt4 key购买 nike

这些是我在 Eclipse IDE for Java EE 中使用 Jax-RS 创建一个简单的 RESTful Web 服务所遵循的步骤。

  • 创建一个新的动态 Web 项目(名称:TestExample)
  • 选择目标运行时为 J2EE Preview
  • 动态网页模块版本:v3.1
  • 配置类型:具有以下项目方面的自定义
  • 动态网页模块:v3.1
  • Java : v1.8
  • JAX-RS(REST Web 服务):v2.0
  • 勾选“生成 web.xml 部署描述符”
  • 在 Java 资源(在 Project Explorer 中)下创建一个新包( my.test.example )和相同的类( TestService )
  • 导入外部jar文件 javax.ws.rs-api-2.0.jar 并将其添加到构建路径以解决 javax.ws.rs导入错误
  • TestService.java
    package my.test.example;

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

    @Path("/MyTestService")
    @ApplicationPath("/resources")
    public class TestService extends Application {

    // http://localhost:8080/TestExample/resources/MyTestService/sayHello
    @GET
    @Path("/sayHello")
    public String getHelloMsg() {
    return "Hello World";
    }
    }
  • web.xml
        <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
    <display-name>TestExample</display-name>
    <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    </web-app>
  • 运行项目

  • 打开此网址: http://localhost:8080/TestExample/resources/MyTestService/sayHello在浏览器中返回:
    HTTP ERROR 404 Not Found
    URI: /TestExample/resources/MyTestService/sayHello
    STATUS: 404
    MESSAGE: Not Found
    SERVLET: default

    控制台输出
    Starting preview server on port 8080

    Modules:
    TestExample (/TestExample)

    2020-05-21 11:45:45.175:INFO::main: Logging initialized @1815ms to org.eclipse.jetty.util.log.StdErrLog
    2020-05-21 11:45:45.894:INFO:oejs.Server:main: jetty-9.4.27.v20200227; built: 2020-03-02T14:40:42.212Z; git: a304fd9f351f337e7c0e2a7c28878dd536149c6c; jvm 1.8.0_171-b11
    2020-05-21 11:45:48.219:INFO:oejw.StandardDescriptorProcessor:main: NO JSP Support for /TestExample, did not find org.eclipse.jetty.jsp.JettyJspServlet
    2020-05-21 11:45:48.289:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0
    2020-05-21 11:45:48.289:INFO:oejs.session:main: No SessionScavenger set, using defaults
    2020-05-21 11:45:48.299:INFO:oejs.session:main: node0 Scavenging every 600000ms
    2020-05-21 11:45:48.425:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@7d907bac{TestExample,/TestExample,file:///C:/.../wip/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/TestExample/,AVAILABLE}{C:/.../wip/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/TestExample}
    2020-05-21 11:45:48.489:INFO:oejs.AbstractConnector:main: Started ServerConnector@6ed3ef1{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
    2020-05-21 11:45:48.504:INFO:oejs.Server:main: Started @5150ms

    预期输出为 Hello World .我在这里想念什么?

    以下步骤基于 Youtube 上的教程: Java EE Tutorial #18 - RESTful Web Services with Jax-RS .

    Eclipse 版本 : 2020-03 (4.15.0)

    备注 :我让它与 GlassFish Runtime 一起工作,但是仍然想知道为什么它不能与 J2EE Runtime 一起工作。

    Eclipse 中的项目结构:

    project structure

    最佳答案

    快的

  • 删除 /来自 @ApplicationPath("/resources")
  • web.xml 不是必需的

  • 解释

    根据这个样本:
  • https://www.logicbig.com/tutorials/java-ee-tutorial/jax-rs/path-annotion-resource-mapping.html
  • https://www.connect2java.com/webservices/jax-rs-applicationpath-annotationno-web-xml-example-in-jersey/
  • @ApplicationPath() 的参数是一个简单的词,没有 /
    尝试:
    @Path("/MyTestService")
    @ApplicationPath("resources")

    而是(/资源)
    @Path("/MyTestService")
    @ApplicationPath("/resources")

    并尝试使用正确的 Maven 版本来避免使用 web.xml。

    关于java - 在 Eclipse 中使用 J2EE Preview 运行时在 Java EE 中实现 RESTful 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61928633/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com