【问题标题】:Difference between GrizzlyServerFactory.createHttpServer and new GrizzlyWebServer WebServerGrizzlyServerFactory.createHttpServer 和新的 GrizzlyWebServer WebServer 之间的区别
【发布时间】:2013-02-07 02:31:09
【问题描述】:

我正在使用 Jersey 和嵌入式 Grizzly Web 服务器创建 RESTful Web 服务。

我发现有两种方法可以创建嵌入式 Grizzly Web 服务器。谁能告诉我两者的区别?

public static void main(String[] args) throws IOException,  ConfigurationException,    DBException, DaxException {
    GrizzlyWebServer gws = new GrizzlyWebServer(8085, "/var/www");
    ServletAdapter jerseyAdapter = new ServletAdapter();

    jerseyAdapter.addInitParameter(
        PackagesResourceConfig.PROPERTY_PACKAGES,"com.merchant.services");
    jerseyAdapter.setServletInstance(new ServletContainer());

    gws.addGrizzlyAdapter(jerseyAdapter, new String[]{"/"});

    // let Grizzly run
    gws.start();
}  

第二种方法是:

ResourceConfig rc = new PackagesResourceConfig("com.merchant.services");
HttpServer httpServer = GrizzlyServerFactory.createHttpServer(BASE_URI, rc);
httpServer.start();

第一种方式很容易配置网络服务器。

【问题讨论】:

    标签: java rest jersey grizzly


    【解决方案1】:

    1

    Grizzly Web ServeServletAdapter 方法是支持 JAX-RS 以及 ServletFilters。这给了你,

    球衣 + ServletContainer

    这将为您提供足够的灵活性来提供更复杂的配置

    2

    如果您认为ServletContainer 是一个附加依赖项,请使用第二个。即,

    球衣 + 简单的 Http 服务器

    【讨论】:

    • 感谢您的回答。那么我是否暗示底层的 WebServer 实现是相同的? GrizzlyWeb Server 是生产质量的 Web 服务器吗?为什么要考虑 grizzly 而不是 tomcat 或 netty?
    • 我发现的一个主要区别是,使用 jersey + Simple Http Server 时,您无法通过可通过以下方式访问的 HttpRequestContext 访问常用数据(例如,远程客户端 IP 地址)一个 HttpServletRequest(仅在配置了 ServletContainer 时才可用)。 Jersey 的 JIRA 上有一个错误,表明有兴趣在 HttpRequestContext 中获取该信息,但目前它在 2 年后“开放/未解决”(java.net/jira/browse/JERSEY-473)。
    猜你喜欢
    • 2010-12-05
    • 1970-01-01
    • 2010-11-26
    • 2021-12-25
    • 2020-05-10
    • 2014-09-20
    • 2010-10-28
    • 2015-10-04
    相关资源
    最近更新 更多