我在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>
我的怀疑
Jersey框架如何注入/扫描JAX-RS资源。如果我们没有明确提供类名
有些文档说(下面提供了链接),我们必须明确注册包名称以告诉Jersey框架,以便它可以扫描这些包并注入AX-RS资源。
链接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