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

时间:2013-10-27 16:40:07

标签: java rest tomcat jax-rs

Tomcat Jersey 库下,我创建了此类中描述的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)将相对网址设置为webresources/service,因此service部分在@Path("service")中定义相同。一切正常,转到http://localhost:8080/GetSomeRest/webresources/service会使用Web服务。

但是,如果我想从http://localhost:8080/GetSomeRest/service直接使用该服务怎么办?我尝试在此类相对网址中仅设置service,我收到了Error 404消息http://localhost:8080/GetSomeRest/service

虚拟路径如何工作?

向Web服务添加别名是什么意思?

2 个答案:

答案 0 :(得分:3)

路径段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. 的值
  5. service - 类@Path注释的值
  6. 我建议跳过第3步。

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

答案 1 :(得分:0)

仅供参考

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

org.netbeans.rest.application.config - ApplicationConfig Class 到您自己的项目中!!!所以改变它并完成它......