2017-01-22 13 views
-1

Итак, мы создали webapp, используя Grizzly/Jersey. Вы запускаете созданный файл jar, а затем предоставляете конечные точки REST, которые позволяют извлекать данные из базы данных и создавать новые записи и т. Д. По той или иной причине мы теперь хотим перейти на веб-сервер, например Payara или Glassfish или что-то еще. У меня проблемы с работой. Сейчас он собирается на войну и отправляется в Пайару. Следуя Deploying jersey web services on Payara 4 doesn´t expose methods, я получил хотя бы признание, что есть конечные точки. Однако они полагаются на внедренный EntityManager, который мы определяем/связываем (вместе с его зависимостями) в подклассе ResourceConfig, который не загружается, поэтому он сбой. Кто-нибудь знает, как загрузить ResourceConfig? Кроме того, что-нибудь еще, что нужно сделать, чтобы заставить это работать?Convert Grizzly/Jersey to Payara

+0

ли вы, что ответ в связанном посте говорит? (Подсказка: ResourceConfig расширяет приложение). –

+0

Вам также необходимо убедиться, что у вас есть зависимость 'jersey-container-servlet'. –

ответ

0

Если вы собираетесь ответ от вашего связанного поста

@javax.ws.rs.ApplicationPath("API_PATH_FOR_JAXRS") 
public class SampleApplication extends Application { 

} 

Это могло бы объяснить поведение, которое вы видите. Пустой Application, аннотированный @ApplicationPath, заставит бутстрап Джерси сканировать путь класса для классов @Path и @Provider и зарегистрировать эти классы.

Но вы используете ResourceConfig, чтобы сделать всю свою регистрацию самостоятельно. Просто бывает, что ResourceConfig на самом деле является подклассом Application. Поэтому вместо создания нового подкласса Application, чтобы разместить аннотацию @ApplicationPath, просто наденьте свой подкласс ResourceConfig.

Если вы не были подклассифицированы ResourceConfig ранее, т.е.

ResourceConfig config = new ResourceConfig() 
    .packages("...") 
    .register(...); 

Тогда просто подкласс сейчас

@ApplicationPath("...") 
public class AppConfig extends ResourceConfig { 
    public AppConfig() { 
     packages("..."); 
     register(...); 
    } 
} 
+0

Спасибо! Я не понял, что ResourceConfig является подклассом приложения. К сожалению, это все еще говорит мне, что есть неудовлетворенные зависимости. В конструкторе ResourceConfig мы регистрируем AbstractBinder, в функции 'configure()' мы вызываем 'bindFactory()' несколько раз, чтобы настроить фабрики для создания 'EntityManager'. Он работает в Grizzly/Jersey, но в настоящее время не работает в Payara; любая идея почему? Код запускается при развертывании, но после регистрации AbstractBinder он все еще говорит, что «deploy is failing» ... «Неудовлетворенные зависимости для типа EntityManager» .... – Erhannis

+0

Добавьте журнал в конструктор ResourceConfig. Он регистрируется? –

 Смежные вопросы

  • Нет связанных вопросов^_^