路径如何在 Java 部署的 REST Web 服务中工作



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 服务添加别名意味着什么?

路径段webresources未在您提供的代码中设置,因此我将猜测您的代码是什么样子的。

JAX-RS 应用程序可以配置一个类扩展javax.ws.rs.core.Application。这样的类可以用@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元素覆盖。

仅供参考

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

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

最新更新