Экземпляр ResourceConfig не содержит никаких исключений корневых классов ресурсов в REST API. - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь запустить REST Api, созданный мной в Java; но я получаю, что экземпляр ResourceConfig не содержит никаких исключений корневых ресурсов, я знаю, что это исключение обычно возникает, когда имя пакета, которое мы дали в качестве пакета поставщика, не содержит какого-либо класса с аннотацией @Path, но здесь это не так. Не могли бы вы взглянуть на web.xml и класс и предложить, что мне нужно изменить. Я пытался решить это честно самостоятельно (за последние 2 дня)

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
   <servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>

    <init-param>  
        <param-name>jersey.config.server.provider.packages</param-name>  
        <param-value>restWebservice</param-value>  
    </init-param>  
    <load-on-startup>1</load-on-startup>
  </servlet>

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

Java-файл

package restWebservice;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

@Path("Movies")
class RestController{

    @GET
    @Path("/{movieName}")
    public Movie getMovieDetails(@PathParam("{movieName}") String nameOfMovie){
        Movie movie=null;
        if(nameOfMovie.contains("Ragnarok")){
                new Movie("Thor-Ragnarok","Released on 3 November 2017 in India");
        }else{
            new Movie("Thor","Released on 29 April 2011 in India");
        }
        return movie;
    }

    @POST
    public Response saveMovieDetails(@QueryParam("movieName") String nameOfMovie, @QueryParam("releaseDate") String dateOfRelease){
        String finalSave = nameOfMovie + " and it's release Information "+ dateOfRelease;

        return Response.status(200).entity(finalSave).build();
    }

}


class Movie{

private String movieName;
private String movieReleaseDate;

public Movie(String name,String date){
this.movieName = name;
this.movieReleaseDate = date;

}


public void displayMovieInfo(){
System.out.println( this.movieName+" and "+ this.movieReleaseDate);
}


}


.

Древовидная структура проекта

├── java
│   └── restWebservice
│       └── RestController.java
├── pom.xml
├── src
│   └── main
│       ├── resources
│       └── webapp
│           ├── WEB-INF
│           │   └── web.xml
│           └── index.jsp
└── target
    ├── classes
    │   └── restWebservice
    │       ├── Movie.class
    │       └── RestController.class
    ├── m2e-wtp
    │   └── web-resources
    │       └── META-INF
    │           ├── MANIFEST.MF
    │           └── maven
    │               └── RESTJava
    │                   └── MovieService
    │                       ├── pom.properties
    │                       └── pom.xml
    └── test-classes

1 Ответ

0 голосов
/ 30 апреля 2018
<param-name>jersey.config.server.provider.packages</param-name>

Этот параметр (который сообщает Джерси, какой пакет сканировать) предназначен для Джерси 2.x. 1.x версия

com.sun.jersey.config.property.packages

Дополнительно:

  • Сделайте ваш класс ресурсов общедоступным, переместите модель в свой собственный файл классов и сделайте его общедоступным.
  • Ваш Java-код должен находиться в src / main / java, поэтому переместите туда папку restWebservice
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...