Введенный ServetContext является нулевым на Grizzly, а не нулевым в TomCat 7 - PullRequest
0 голосов
/ 10 октября 2011

Я работаю над веб-сервисом Jax-RS RESTful. Хотя я все еще пишу (в Eclipse), я хотел бы иметь возможность легко отлаживать, поэтому я решил создать проект Maven и использовать зависимости от веб-сервера Grizzly, что позволяет мне запускать сервер всего с 2 строки кода (даже не нужно создавать файл WAR).

В своем классе реализации веб-сервиса (класс с @Path) я ввел контекст как переменную-член:

@javax.ws.rs.core.Context
ServletContext context;

Когда я проверяю переменную контекста на null, она не будет нулевой, если я создаю файл WAR и развертываю его в TomCat, но она будет нулевой, когда я запущу свой сервер Grizzly и проверю его. Запуск сервера Grizzly v1.9 выполняется следующим образом:

String url = "http://localhost:1234";
SelectorThread srv = GrizzlyServerFactory.create(url);

Я пытался найти решение этой проблемы с помощью Google, кто-то предложил включить «загрузку при запуске» в web.xml, но это тоже не помогло.

Есть идеи? Ура!

Ответы [ 2 ]

1 голос
/ 10 октября 2011

Я предполагаю, что вы используете Grizzly без расширения Servlet Container.Теоретически JAX-RS может работать не только в среде сервлетов, но тогда вы не можете получить ServletContext или HttpServletRequest или Response.

0 голосов
/ 11 октября 2011

Хотя другой ответ здесь имел некоторый смысл, я не был слишком уверен, потому что в соответствии с деревом зависимостей maven также был включен пакет сервлета.Maven зависимость.Сейчас я использую

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-grizzly2</artifactId>
    <version>1.9.1</version>
</dependency>

и следую инструкциям http://blogs.oracle.com/PavelBucek/entry/jersey_grizzly_2_x_integration (образец), чтобы все заработало.Контекст сервлета теперь успешно введен.

...