【问题标题】:Jersey hello world displays nothingJersey hello world 什么都不显示
【发布时间】:2015-07-15 15:44:52
【问题描述】:

我是 jersey 的 rest web 服务新手,(tomcat

我有一个HelloWorld 来源:(在RestApp 包中)

package com.ss.hh;
...

@Path("/hello")
public class HelloWorld {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getMessage(){
        return "Hello jersey";
    }
}

这里是web.xml

<servlet>
    <servlet-name>jersey-serlvet</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>com.ss.hh</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

pom.xml:

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-server</artifactId>
    <version>2.19</version>
</dependency>

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-servlet</artifactId>
    <version>1.19</version>
</dependency>

为什么我无法在http://localhost:8080/hello 中收到Hello jersey 消息?

更新

我将jersey-servlet 替换为jersey-container-servlet-core 文件并更改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.ss.hh</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey REST Service</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

但它没有显示任何内容:http://localhost:8080/FirstRestApp/hello

FirstRestApp 是项目名称。

【问题讨论】:

  • 您的jersey-servletjersey-server JAR 版本不同。尝试使用属于glassfish groupId 的jersey-servletmvnrepository.com/artifact/org.glassfish.jersey.containers/…
  • 另外,如果你想使用上面提到的 URL (http://localhost:8080/hello),部署到 Tomcat 服务器的 WAR 应该在 ROOT 上下文中。为此,您需要清除 Tomcat 的 webapp 文件夹(包括 ROOT),并使用名称 ROOT 部署您的 WAR 文件。
  • @Rakesh 我将 jar 文件替换为 jersey-server ,并将 web.xml 内容更改为 updated section 并且没有显示任何内容。
  • 好吧,我尝试部署一个简单的 Jersey webapp,发现需要 5 个不同的依赖项。 jersey-serverjersey-clientjersey-commonjersey-container-servlet-corejavax.ws.rs-api。你可以试试这些,看看它是否有效。

标签: java rest maven intellij-idea jersey


【解决方案1】:

在你的 url 中添加根上下文路径:

试试http://localhost:8080/FirstRestApp/hello

更新:

我完全按照您的需要创建了一个小项目,并进行了一些修改,它对我来说工作正常..

https://github.com/darsh9292/FirstRestApp

【讨论】:

  • 这次我收到404 not found 错误,在http://localhost:8080/FirstRestApp/hello
【解决方案2】:

如果你的 IDE 是 intellij IDEA,你应该试试这个 url:

http://localhost:8080/hello

(不含项目名称)

【讨论】:

  • 对 IDE 的猜测不错,顺便说一句,您是从那个角度考虑的吗?
  • 思考这个问题的奇怪方式 - 喜欢它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 2012-05-18
  • 2011-09-12
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
相关资源
最近更新 更多