Шаблон сканирования корневых ресурсов каркаса Джерси

Я создал пример проекта в Eclipse и развернул его в Tomcat.

Я использую ниже файлы JAR.

ASM-3.1.jar

Джерси-ядро-1.10.jar

Джерси-сервер 1.10.jar

Джерси-сервлет-1.10.jar

ниже классы.

package example;  

import javax.ws.rs.GET;  
import javax.ws.rs.Path;  
import javax.ws.rs.Produces;  


@Path("helloworld")  
public class HelloWorldResource {  

    @GET  
    @Produces("text/plain")  
    public String getHello() {  
        return "Hello World!";  
    }  

}  

а также

package example;  

import javax.ws.rs.ApplicationPath;  
import javax.ws.rs.core.Application;  


@ApplicationPath("/")  
public class MyApplication extends Application {  
//    @Override  
//    public Set<Class<?>> getClasses() {  
//        final Set<Class<?>> classes = new HashSet<Class<?>>();  
//        // register root resource  
//        classes.add(HelloWorldResource.class);  
//        return classes;  
//    }  
}  

мой web.xml

<?xml version="1.0" encoding="UTF-8"?>  
<web-app>  
  <display-name>JXRSHelloWorld</display-name>  
    <servlet>    
    <servlet-name>jersey</servlet-name>    
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>    
    <load-on-startup>1</load-on-startup>  
  </servlet>   
</web-app>  

Мои сомнения

  1. Как среда Джерси внедряет / сканирует ресурсы JAX-RS. если мы не предоставляем имена классов явно

  2. В некоторых документах говорится (ссылки приведены ниже), мы должны явно зарегистрировать имя пакета, чтобы сообщить платформе Jersey, чтобы он мог сканировать эти пакеты и вводить ресурсы AX-RS.

Ссылка 1: https://jersey.java.net/documentation/latest/deployment.html

Ссылка 2: http://docs.oracle.com/cd/E19776-01/820-4867/ggnxs/index.html

даже если я удалю метод getClasses() из класса MyApplication, он работает нормально. Я сомневаюсь, как он находит ресурс HelloWorldResource.java?

Это снимок моего файла Tomcat catalina.out:

Feb 6, 2014 7:48:38 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses  
INFO: Root resource classes found:  
  class example.HelloWorldResource  

В приведенном выше коде я явно не говорю фреймворку зарегистрировать мой класс HelloWorldResource, как я прокомментировал метод getClasses. Сканирует ли он по аннотации, например @Path("helloworld") @Produces("text/plain")?

Спасибо,

Niraj

0 ответов

Другие вопросы по тегам