使用web.xml配置Grizzly

yve*_*lem 12 web.xml jersey grizzly

我可以用灰熊开始并用以下几行在其上部署Jersey webservices.

protected HttpServer create() throws Throwable {
  ResourceConfig rc = new PackagesResourceConfig("com.resource", "com.provider");
  HttpServer server = GrizzlyServerFactory.createHttpServer(uri, rc);
  return server;
}
Run Code Online (Sandbox Code Playgroud)

但有没有办法加载web.xml而不是ResourceConfig

<web-app>
  <servlet>
    <servlet-name>Jersey</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>com.resource, com.provider</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>Jersey</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)

小智 0

目前似乎没有直接的方法来配置 grizzly web.xml。不过,我使用了部分解决方案,这可能是一个开始。

网络.xml

首先要了解解决方案,我们必须了解使用 a 的含义web.xml。它基本上用于配置您的网络应用程序(有关更多详细信息,请参阅此答案)。在本例中,我们正在配置init-paramsservlet。

(部分)解决方案

我们可以使用Grizzly 作为我们的 servlet 并初始化参数,web.xml而不是使用 和。ResouceConfig.class例如

<web-app>
  <servlet>
    <servlet-name>Jersey</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>com.resource, com.provider</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>Jersey</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)

会给出类似的东西:

protected HttpServer create() throws Throwable {
    HashMap<String, String> initParams = new HashMap<>();

    //ServerProperties.PROVIDER_PACKAGES is equal to "jersey.config.server.provider.packages"
    initParams.put(ServerProperties.PROVIDER_PACKAGES, "com.resource,com.provider");

    //Make sure to end the URI with a forward slash
    HttpServer server = GrizzlyWebContainerFactory.create("http://localhost:8080/", initParams);
    return server;
}
Run Code Online (Sandbox Code Playgroud)

有了这个,我们就可以放置init-params我们想要的所有内容。然而这个解决方案不能取代整个web.xml.