【问题标题】:How do paths work in a Java deployed REST web service?路径在 Java 部署的 REST Web 服务中如何工作?
【发布时间】:2013-10-27 16:40:07
【问题描述】:

TomcatJersey 库下,我创建了本课程中描述的 REST Web 服务:

package Servicios;

import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.PathParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;

@Path("service")
public class ServiceResource {

    @Context
    private UriInfo context;

    /**
     * Creates a new instance of ServiceResource
     */
    public ServiceResource() {
    }

    @GET
    @Produces("text/html")
    public String getHtml() {

        return "<h1>Here we are, at the contemplation of the most simple web service</h1>";
    }

    @PUT
    @Consumes("text/html")
    public void putHtml(String content) {
    }
}

所以,正如我在访问 http://localhost:8080/GetSomeRest 之前设置的那样,会创建默认创建的 .jsp 文件。

我在项目属性(使用 NetBeans)中将一个 相对 URL 设置为webresources/service,因此service 部分与@Path("service") 中的定义相同。一切正常,转到http://localhost:8080/GetSomeRest/webresources/service 会使用 Web 服务。

但是,如果我想直接从http://localhost:8080/GetSomeRest/service使用该服务怎么办?我试图在这样的相对 URL 中只设置 service,然后我收到了一条 Error 404 消息去 http://localhost:8080/GetSomeRest/service

虚拟路径如何工作?

向 Web 服务添加别名意味着什么?

【问题讨论】:

  • 我不清楚你在问什么。您是在问相对 URL 是如何工作的吗?您是否在问如何在您的 Web 服务中设置别名?这很混乱。

标签: java rest tomcat jax-rs


【解决方案1】:

你提供的代码中没有设置路径段webresources,所以我猜你的代码是什么样子的。

可以使用扩展 javax.ws.rs.core.Application 的类来配置 JAX-RS 应用程序。这样的类可以用@javax.ws.rs.ApplicationPath()注解。我的猜测是,在您的项目中,此注释设置为

@javax.ws.rs.ApplicationPath("webresources")

所以JAX-RS 资源类的 URL 是从这些部分构建的。

  1. http://localhost:8080/ - 主机和端口
  2. GetSomeRest - 上下文,通常是部署的 .war 文件的名称
  3. webresources - @ApplicationPath 注释的值
  4. service - 类的@Path 注解的值

我建议不要跳过第 3 步。

@ApplicationPath 注释的值可以被web.xml 中的servlet-mapping 元素覆盖。

【讨论】:

  • web.xml 应该在哪里?
  • web.xml 在目录/WEB-INF/ 中是可选的。
  • 该文件应该定义什么?为什么它是可选的?
【解决方案2】:

仅供参考

路径段webresources 由netbeans在包中的代码中设置

org.netbeans.rest.application.config - ApplicationConfig 类 到你自己的项目中!!!所以改变它,它就完成了......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    相关资源
    最近更新 更多