使用Tomcat部署JAX-RS应用程序,但始终找不到所需的资源

时间:2016-03-08 19:54:32

标签: java rest tomcat jersey jax-rs

我使用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:

http://localhost:8080/smartculm/api/service/noticias

1 个答案:

答案 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和:

  • 显示 -name - &gt;在web.xml
  • <display-name>标记中配置
  • url-pattern - &gt;在web.xml
  • <url-pattern>标记中配置
  • path_from_rest_class - &gt;由类中的@Path注释定义
  

http://your_domain:port/display-name/url-pattern/path_from_rest_class