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

路径在Java部署的REST web服务中如何工作?,java,rest,tomcat,jax-rs,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.w

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) {
    }
}
package服务;
导入javax.ws.rs.core.Context;
导入javax.ws.rs.core.UriInfo;
导入javax.ws.rs.PathParam;
导入javax.ws.rs.Consumes;
导入javax.ws.rs.PUT;
导入javax.ws.rs.Path;
导入javax.ws.rs.GET;
导入javax.ws.rs.products;
@路径(“服务”)
公共类服务资源{
@上下文
私有信息上下文;
/**
*创建ServiceResource的新实例
*/
公共服务资源(){
}
@得到
@生成(“文本/html”)
公共字符串getHtml(){
return“我们在这里,正在考虑最简单的web服务”;
}
@放
@使用(“文本/html”)
公共HTML(字符串内容){
}
}
因此,在访问
http://localhost:8080/GetSomeRest
创建默认的
.jsp
文件

我在ProjectProperties(使用NetBeans)中设置了一个相对URL作为
webresources/service
,因此
service
部分的定义与
@Path(“service”)
中的定义相同。一切正常,进入
http://localhost:8080/GetSomeRest/webresources/service
使web服务被消费

但是如果我想直接从
http://localhost:8080/GetSomeRest/service
?我试图在这样的相对URL中只设置
服务
,我得到了一条
错误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是从这些部分构建的

  • http://localhost:8080/
    -主机和端口
  • GetSomeRest
    -上下文,通常是部署的
    .war
    文件的名称
  • webresources
    -
    @ApplicationPath
    注释的值
  • service
    -类的
    @Path
    注释的值
  • 我建议不要跳过第3步

    @ApplicationPath
    注释的值可以被
    web.xml

    中的
    servlet映射
    元素覆盖,仅供参考


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


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

    我不清楚你在问什么。你是在问相对URL是如何工作的吗?您是否在询问如何在web服务中设置别名?这很让人困惑。
    web.xml
    应该在哪里?在目录
    /web-INF/
    中,
    web.xml
    是可选的。该文件应该定义什么?为什么它是可选的?