在 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服务添加别名是什么意思?
答案 0 :(得分:3)
路径段webresources
未在您提供的代码中设置,因此我猜猜您的代码是什么样的。
可以使用扩展javax.ws.rs.core.Application
的类配置JAX-RS应用程序。这样的类可以用@javax.ws.rs.ApplicationPath()
注释。我的猜测是,在你的项目中,这个注释被设置为
@javax.ws.rs.ApplicationPath("webresources")
因此,JAX-RS
资源类的URL是从这些部分构建的。
http://localhost:8080/
- 主持人和端口GetSomeRest
- 上下文,通常是已部署的.war
文件的名称webresources
- @ApplicationPath
注释service
- 类@Path
注释的值我建议不跳过第3步。
@ApplicationPath
注释的值可以被servlet-mapping
中的web.xml
元素覆盖。
答案 1 :(得分:0)
仅供参考
路径段webresources
由包中的netbeans在代码中设置
org.netbeans.rest.application.config - ApplicationConfig Class 到您自己的项目中!!!所以改变它并完成它......