1

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怎么办?我试图只service在这样的相对 URL 中设置,我收到一条Error 404消息http://localhost:8080/GetSomeRest/service

虚拟路径如何工作?

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

4

2 回答 2

3

您提供的代码中未设置路径段webresources,所以我猜您的代码是什么样的。

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

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

因此,资源类的 URLJAX-RS是从这些部分构建的。

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

我建议不要跳过第 3 步。

注释的值@ApplicationPath可以被.servlet-mappingweb.xml

于 2013-10-27T18:16:12.330 回答
0

仅供参考

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

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

于 2016-04-15T08:04:26.540 回答