我使用Jersey库开发了一个使用JAX-RS的RESTful服务。我已经构建并编译它(没有错误),我已经使用Tomcat 8.0进行了部署。
但是当我通过浏览器访问服务时,总是出现同样的错误:
Status HTTP 404 - Not Found
type Informe de estado
message Not Found
description The requested resource is not available
Apache Tomcat/8.0.21
我已经经历了几天的努力,我找不到解决方案。我遵循了多次教程,其中一些非常简单,但没有一个让我的服务正常工作。
我尝试过使用IntellJ Idea和Eclipse。您可以下载该项目并从我的Github尝试服务:
https://github.com/daniegarcia254/SmartCULM.git
master 除了两个分支,一个用于Eclipse project,另一个用于IntellJ Idea project。
两个项目都使用Maven存储库来处理各自所需的库 pom.xml 。
我认为我最后的错误是我没有确定服务网址,但我尝试了千种方式。也许我有错误的项目结构或错误的 web.xml 配置,不再确定任何事情!
有关额外信息,此处URL I'think应该是在部署后有效访问RESTful服务的URL:
答案 0 :(得分:2)
我不是肯定的,但我认为你的web.xml文件中可能缺少一些数据。在我工作过的项目中,我必须指定servlet的类以及资源和应用程序文件的位置。
<display-name> display-name </display-name>
<servlet>
<servlet-name>Some_Service_Name</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.resource.package.name</param-value>
</init-param>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.application.package.ApplicationClassName</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Some_Service_Name</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
我相信不是&#34; com.resource.package.name&#34;,你可能会使用&#34; main.java.rest.smartculm&#34;。我在项目中看不到应用程序,所以我不确定你会使用什么。我通常通过扩展javax.ws.rs.core.Application来定义自己的应用程序类。我还将webapp目录中的所有文件放在项目根目录下的WebContent目录中,而不是放在src目录中。
我过去常用的参考资料是: http://www.vogella.com/tutorials/REST/article.html
重要:强> 资源的完整路径基于基本URL和:
<display-name>
标记中配置
<url-pattern>
标记中配置
http://your_domain:port/display-name/url-pattern/path_from_rest_class