在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)中设置了一个相对 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 是从这些部分构建的。
-
http://localhost:8080/
- 主机和端口 -
GetSomeRest
- 上下文,通常是已部署.war
文件的名称 -
webresources
-@ApplicationPath
批注的值 -
service
- 类的@Path
注的值
我建议不要跳过第 3 步。
@ApplicationPath
注释的值可以被web.xml
中的servlet-mapping
元素覆盖。
仅供参考
路径段webresources
由包中的 NetBeans 在代码中设置
org.netbeans.rest.application.config - ApplicationConfig 类到您自己的项目中!!所以更改它就完成了...