java - REST 服务没有响应

标签 java rest maven tomcat

我已经使用 tomcat 和 jersey 构建了一个休息服务。

使用的 web.xml 仅包含:

  <servlet>
    <servlet-name>Jersey REST Service</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>

pom.xml 文件包含:

  <repositories>
    <repository>
      <id>maven2-repository.java.net</id>
      <name>Java.net Repository for Maven</name>
      <url>http://download.java.net/maven/2/</url>
      <layout>default</layout>
    </repository>
  </repositories>
  <dependencies>
    <dependency>
      <groupId>com.pi4j</groupId>
      <artifactId>pi4j-core</artifactId>
      <version>1.0</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jersey.containers</groupId>
      <artifactId>jersey-container-servlet</artifactId>
      <version>2.17</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jersey.media</groupId>
      <artifactId>jersey-media-json-jackson</artifactId>
      <version>2.17</version>
    </dependency>
  </dependencies>
</project>

这是我用作服务实现的 java 文件的一部分:

@Path("/light")
public class Hello {

  // This method is called if TEXT_PLAIN is requested
  @GET
  @Path("/state/")
  @Produces(MediaType.TEXT_PLAIN)
  public String getStateOfLights() {
    return "hi";//getLightsStateAsJSON();
  }
}

This is my file layout

WebContent 目录下的 index.html 文件可以通过 localhost:8080/ha/index.html 访问。这按预期工作。

如果我想测试我的休息服务,我会打电话:http://localhost:8080/ha/rest/light/state/ 我得到了什么:HTTP 状态 404:未找到

我在这里错过了什么?

这是服务器日志:

Apr 25, 2015 7:07:32 PM org.apache.tomcat.util.digester.SetPropertiesRule begin WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:ha' did not find a matching property.
Apr 25, 2015 7:07:32 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /Users/werner/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
Apr 25, 2015 7:07:32 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Apr 25, 2015 7:07:32 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Apr 25, 2015 7:07:32 PM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 620 ms
Apr 25, 2015 7:07:32 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Apr 25, 2015 7:07:32 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.59
Apr 25, 2015 7:07:33 PM org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom 
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [548] milliseconds.
Apr 25, 2015 7:07:34 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-bio-8080"]
Apr 25, 2015 7:07:34 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Apr 25, 2015 7:07:34 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 2641 ms

最佳答案

你错过了<init-param>在你的 web.xml 中。应该是:

<servlet>
  <servlet-name>Jersey REST Service</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.example</param-value> <!-- where com.example.Hello is your Hello class -->
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>Jersey REST Service</servlet-name>
  <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

替换com.example用你的包裹Hello类。

关于java - REST 服务没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29867865/

相关文章:

Maven 存储库继承和覆盖

java - JUnit 测试 : Why is Maven (Surefire) so much slower than running on Eclipse?

java - 如何避免非法状态异常?

java.lang.StringIndexOutOfBoundsException : while using charAt function

java - Jersey (REST) RESPONSE 多部分/混合多个 body 部分

ruby-on-rails - Magento oauth 和 REST api 问题

java - Android 应用程序 - 中心标题

java - System.out.printf() 用法

json - Google fit API 根据范围添加多种数据类型

java - 如何在tomcat服务器中管理多个war应用程序?