gpt4 book ai didi

java - Tomcat RESTful Web 服务部署

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:38 25 4
gpt4 key购买 nike

我正在使用 Java、tomcat7、jersey 和 IDE eclipse 编写一个简单的 RESTful 网络服务。

当我使用 eclipse(服务器)启动 Web 服务时,它运行良好。我测试了 GET 和 POST 方法。但是当我在 WAR 文件中导出应用程序并使用 tomcat 管理 UI 进行部署时。它返回状态 404 未找到。

例子如下:

@Path("/webservice")
public class WebService {

@POST
@Path("/post")
@Produces(MediaType.APPLICATION_JSON)
public Response helloWorld(String inputJson) {
return Response.ok().entity("Hello World").build();
}

@GET
@Path("/{param}")
public Response getMessage(@PathParam("param") String message) {
String output = "Jersey say Hello World!!! : " + message;
return Response.status(200).entity(output).build();
}
}

这是 web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>WebService</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>package.webservice</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>

谁能解释一下在 eclipse 中启动服务和在本地主机(或远程主机)中部署有什么区别?我该如何调试或获取有关此的一些痕迹?

最佳答案

有 2 个建议可以帮助您摆脱这个问题1)在你的资源文件中创建一个默认方法,这样如果没有匹配的url就会调用否则它可能会给出404

@GET
@Produces({ MediaType.TEXT_HTML, MediaType.TEXT_PLAIN })
public String default() {
return "Hello Rest Api";
}

可以看到-> Rest api resource example

2) 在下面的 web.xml 中设置默认的 rest api 路径

<servlet-mapping>
<servlet-name>Jersey</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>

可以看到-> Rest api default path set

这样当你调用你的 api 时 -> http://something.com/project/rest然后你的资源文件的默认方法将被触发。所以没有 404 发生。

关于java - Tomcat RESTful Web 服务部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31657641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com