Публикация экземпляра сервиса Джерси в Grizzly - PullRequest
0 голосов
/ 16 февраля 2012

Я могу опубликовать сервис джерси для гризли, выполнив следующие действия:

final String baseUri = "http://localhost:51000";
final Map<String, String> initParams = new HashMap<String, String>();
initParams.put("com.sun.jersey.config.property.packages", "my.rest.service");
SelectorThread threadSelector = GrizzlyWebContainerFactory.create(baseUri, initParams);

Таким образом, указанный пакет будет проверен на наличие классов обслуживания, помеченных @Path, и они будут инициализированы. У меня вопрос, есть ли способ указать предварительно инициализированный класс обслуживания джерси - инициализированный через пользовательскую фабрику или даже просто с помощью нового MyService () - и опубликовать его в Grizzly или любом другом контейнере?

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

или любой другой контейнер?

Джерси также поддерживает контейнер SimpleHttp, если вы добавили дополнительный модуль джерси и используете SimpleServerFactory .

ResourceConfig config = new DefaultResourceConfig();
config.getSingletons().add(new MyInstantiatedResource());

String serverBase = "http://localhost:8080/foo";
Closeable server = SimpleServerFactory.create(serverBase, config);
1 голос
/ 16 февраля 2012

Вы можете использовать GrizzlyServerFactory.create (URI u, ResourceConfig rc) и добавить свои синглтоны в предоставленный ResourceConfig. то есть:

final String baseUri = "http://localhost:51000";
final ResourceConfig rc = new PackagesResourceConfig("my.rest.service");
rc.getSingletons().add(new MyInstantiatedResource());
SelectorThread threadSelector = GrizzlyServerFactory.create(baseUri, rc);
...