Шаблон сканирования корневых ресурсов каркаса Джерси
Я создал пример проекта в 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>
Мои сомнения
Как среда Джерси внедряет / сканирует ресурсы JAX-RS. если мы не предоставляем имена классов явно
В некоторых документах говорится (ссылки приведены ниже), мы должны явно зарегистрировать имя пакета, чтобы сообщить платформе 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