根资源类扫描Jersey框架的模式

时间:2014-02-06 14:58:14

标签: jersey jersey-2.0 jersey-1.0

我在eclipse中创建了示例项目并将其部署在tomcat中。

我在jar文件下面使用。

ASM-3.1.jar

Jersey的芯 - 1.10.jar

球衣 - 服务器 - 1.10.jar

Jersey的servlet的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. Jersey框架如何注入/扫描JAX-RS资源。如果我们没有明确提供类名

  2. 有些文档说(下面提供了链接),我们必须明确注册包名称以告诉Jersey框架,以便它可以扫描这些包并注入AX-RS资源。

  3. 链接1:https://jersey.java.net/documentation/latest/deployment.html#deployment.servlet.2

    链接2:http://docs.oracle.com/cd/E19776-01/820-4867/ggnxs/index.html

    即使我从类MyApplication中删除方法getClasses(),它也能正常工作。我怀疑它是如何找到资源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 个答案:

没有答案
相关问题