Java REST-404资源找不到

时间:2018-07-18 04:55:41

标签: java rest tomcat glassfish

我正在尝试访问Hello world(目前)应用程序中的资源。 但是,我得到的HTTP状态为404-在Tomcat上部署它并单击URL:localhost:8080 / test / rest时找不到。 这是我的pom.xml依赖关系:

<dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-common</artifactId>
        <version>2.26-b03</version>
</dependency>
<dependency>
       <groupId>org.glassfish.jersey.core</groupId>
       <artifactId>jersey-server</artifactId>
       <version>2.26-b03</version>
</dependency>
<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
</dependency>
<dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>2.26-b03</version>
</dependency>
<dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.11</version>
       <scope>test</scope>
</dependency>

这是我的web.xml配置:

<web-app>
    <display-name>Archetype Created Web Application</display-name>
<servlet>
    <servlet-name>HelloWorld Jersey 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.latin.translator.app</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name >HelloWorld Jersey Service </servlet-name >
    <url-pattern >/test/*</url-pattern >
</servlet-mapping>
</web-app>

java代码是:

@Path("/test")
public class Test {

    @GET
    @Produces(TEXT_PLAIN)
    @Path("/rest")
    public String test() {
        return "Great success";
    }
}

您有任何想法我在做什么错吗?

3 个答案:

答案 0 :(得分:2)

TRy localhost:8080 / test / test / rest

<servlet-mapping>
    <servlet-name >HelloWorld Jersey Service </servlet-name >
    <url-pattern >/test/*</url-pattern >
</servlet-mapping>

这说根是测试的,所以jesrsey的url是localhost:8080 / test /

现在

@Path("/test")
public class Test {

现在说下一个URL路径是test,所以url是localhost:8080 / test / test

@Path("/rest")
    public String test() {
        return "Great success";
    }

将/ rest用作下一个网址,因此其localhost:8080 / test / test / rest

答案 1 :(得分:0)

您需要扩展javax.ws.rs.core.Application类。

@ApplicationPath("/") // the context root of you application
public class JaxRsConfig extends Application {

      private final Set<Class<?>> classes;

      public JaxRsConfig() {
        HashSet<Class<?>> c = new HashSet<>();
        c.add(Test.class); //repeat for all JAX-RS classes in your application

        classes = Collections.unmodifiableSet(c);
      }

      @Override
      public Set<Class<?>> getClasses() {
        return classes;
      }

}

使用此方法,您不需要web.xml文件。

答案 2 :(得分:-1)

由于指定了提供程序包,因此您可以尝试使用以下url-localhost:8080 / com.latin.translator.app / test / rest