12

I can start grizzly and deploy Jersey webservices on it with the following lines.

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

But is there a way to load a web.xml instead of a 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>
4

1 回答 1

0

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

web.xml

首先要了解解决方案,我们必须了解使用 a 是什么意思web.xml。它基本上用于配置您的 Web 应用程序(有关更多详细信息,请参阅此答案)。在这种情况下,我们正在init-params为 servlet 进行配置。

(部分)解决方案

我们可以使用 Grizzly 作为我们的 servlet 并初始化参数,而不是使用web.xmland 而不是 using 。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>

会给出类似的东西:

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;
}

有了这个,我们就可以把所有init-params我们想要的。但是,此解决方案不能替代整个web.xml.

于 2015-08-26T20:55:53.370 回答