我正在寻找使用嵌入式Jetty的球衣来实现我们服务的Web API。我看到代码使用ServletContextHandler,ServletHolder和所有这些类来让Jetty了解Jersey处理程序。我有兴趣知道引擎盖下的问题,比如当我们编译这段代码时会发生什么,jetty实际上是如何发现泽西处理程序的。我知道如果我开始阅读文档,我将能够弄清楚,但是,寻找一些涵盖这个主题的快速链接。有没有这样的链接?
感谢。
答案 0 :(得分:1)
Jetty可以作为http服务器,也可以作为处理servlet生命周期的servlet容器(init,service,destroy) servlet是一个扩展HttpServlet类的java类,可以覆盖init,service,destroy方法等。一旦jetty 收到一个URL与servlet匹配的请求,它将servlet加载到内存中(如果还没有),调用 服务方法,并将其保存在内存中,直到它被破坏。
Jersey库提供了一种编写RESTful API的标准方法,其中类使用诸如GET / POST之类的标记进行注释
等和URL。这些类称为资源类。它还提供了一个名为ServletContainer的servlet
连接Jetty的servlet容器,拦截Jetty的处理servlet的请求(就像任何servlet请求到jetty一样)
这是一个接收请求的类。
这个servlet的作用是检查请求,与通知它的资源类URL匹配,然后进行传输
控制该资源类的方法(我认为它使用反射进行此路由)。因此,资源
类不是servlet本身,但是服务器的ServletContainer类是系统中唯一活动的servlet。
ServletContainer知道的资源类列表由此属性配置,名为" com.sun.jersey.config.property.packages"
使用Jersey的好处是实现您的REST API,您可以使用标准的代码编写方式
如果需要将来部署到任何其他标准servlet容器,如tomcat,...