休息服务 url 不工作 (404) -Glassfish
rest service url not working (404) -Glassfish
我根据一些示例创建了一个简单的 restful 网络服务,并将其构建到一个 .war 文件中(项目结构在 WEB-INF 下有 web.xml),部署它在 glassfish 上,当我尝试调用它时出现 404 未找到错误。
我的 class 包含服务是:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
/**
* Created by Nikos Kritikos on 10/22/2015.
*/
@Path("/decks")
public class HS_Services {
@Path("sayHello/{name}")
@GET
public String doSayHello(@PathParam("name") String name) {
return "Hello there "+name;
}
}
我的web.xml是这样的:
<servlet>
<servlet-name>HSRestServices</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HSRestServices</servlet-name>
<url-pattern>/hsrest/*</url-pattern>
</servlet-mapping>
我尝试用 http://localhost:8080/HSRestServices/hsrest/decks/sayHello/Nikos 调用它,但我从 glassfish 得到 404..
任何帮助将不胜感激,谢谢。
您缺少 init-param
,您在其中指定应为 REST 端点 class 扫描哪些包。
将您的 web.xml
更改为如下所示:
<servlet>
<servlet-name>HSRestServices</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>insert.packagename.where.your.class.is.here</param-value>
</init-param>
</servlet>
确保插入包含您的 class 的包裹的名称。
您不需要 Spring。
还有另一种不使用 web.xml
的方法。有关详细信息,请查看 .
我根据一些示例创建了一个简单的 restful 网络服务,并将其构建到一个 .war 文件中(项目结构在 WEB-INF 下有 web.xml),部署它在 glassfish 上,当我尝试调用它时出现 404 未找到错误。 我的 class 包含服务是:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
/**
* Created by Nikos Kritikos on 10/22/2015.
*/
@Path("/decks")
public class HS_Services {
@Path("sayHello/{name}")
@GET
public String doSayHello(@PathParam("name") String name) {
return "Hello there "+name;
}
}
我的web.xml是这样的:
<servlet>
<servlet-name>HSRestServices</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HSRestServices</servlet-name>
<url-pattern>/hsrest/*</url-pattern>
</servlet-mapping>
我尝试用 http://localhost:8080/HSRestServices/hsrest/decks/sayHello/Nikos 调用它,但我从 glassfish 得到 404.. 任何帮助将不胜感激,谢谢。
您缺少 init-param
,您在其中指定应为 REST 端点 class 扫描哪些包。
将您的 web.xml
更改为如下所示:
<servlet>
<servlet-name>HSRestServices</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>insert.packagename.where.your.class.is.here</param-value>
</init-param>
</servlet>
确保插入包含您的 class 的包裹的名称。
您不需要 Spring。
还有另一种不使用 web.xml
的方法。有关详细信息,请查看