Настройка Grizzly с помощью web.xml - PullRequest
11 голосов
/ 24 января 2012

Я могу запустить Grizzly и развернуть на нем веб-сервисы Джерси со следующими строками.

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

Но есть ли способ загрузить 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>

1 Ответ

0 голосов
/ 26 августа 2015

Кажется, что в настоящее время нет прямого способа настроить гризли с помощью web.xml.Однако я использовал частичное решение, которое может быть началом.

web.xml

Сначала, чтобы понять решение, мы должны понять, что означает использование web.xml.Это в основном используется для настройки вашего веб-приложения (см. ответ для более подробной информации).В этом случае мы настраиваем init-params для сервлета.

(частичное) решение

Вместо использования web.xml и вместо ResouceConfig.class мы можем использовать Grizzly в качестве нашего сервлета и инициализации параметров.Например,

<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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...