1

У меня есть чистое приложение JAX-RS как в Glassfish, так и в причал-сервлете. Я пытаюсь вставить некоторые бобы в работу Кварца.Как я могу использовать бисквиты Джерси в кварцевую работу в Weld?

Я аннотировал поля Работы с @javax.inject.Inject, но я также считаю, что мне нужно сделать Рабочую фабрику доступной для контейнера, или наоборот - я немного потерял здесь, с чего начать.

Как это сделать?

+0

Виктор, вы хотите, чтобы @ Ввести задания в свои другие бобы? – Justin

+0

Нет, наоборот. Мне в основном нужен регистратор и DAO на работе. –

ответ

0

Привет, Виктор, не более подробно относительно вашего приложения. Я собираюсь предположить, что вы работаете в контейнере сервлетов. Невозможно сделать это с помощью «чистого» приложения JAX-RS.

Однако я бы рекомендовал использовать CDI (Weld или OpenWebBeans). Затем вы можете использовать Deltaspike, чтобы включить контекст запроса в вашем задании Quartz, чтобы получить ссылку на компонент с включенным запросом.

Включение Weld в вашем контейнере сервлетов довольно simple

Руководство по включению контекст запроса вне запроса HTTP доступна here

По умолчанию вы можете не вводить @RequestScoped бобы в свой кварцевой работу (там не является HTTP-запросом, поэтому не существует контекста запроса). Чтобы обойти это, вы можете либо включить контекст запроса, указав ссылку выше OR (и, возможно, мой подход), вставьте @Dependent бобы (которые выполняют работу) в ваши JAX RS-компоненты (в основном обертки), вы можете легко получить ссылки к объектам @Dependent, включенным в ваше кварцевое задание.

Вот мои web.xml и pom.xml для запуска Weld и Jersey внутри причала, вам понадобятся причал, плюс-джи и Weld зависимости.

Вот некоторые info о получении установки JNDI в причалу, однако я не использую этот метод, как я начинаю причалом в качестве встроенного контейнера внутри приложения SE, вот фрагмент кода, что я делаю:

String[] configurationClasses = 
{ 
    "org.eclipse.jetty.webapp.WebInfConfiguration", 
    "org.eclipse.jetty.webapp.WebXmlConfiguration", 
    "org.eclipse.jetty.webapp.MetaInfConfiguration", 
    "org.eclipse.jetty.webapp.FragmentConfiguration", 
    "org.eclipse.jetty.plus.webapp.EnvConfiguration", 
    "org.eclipse.jetty.webapp.JettyWebXmlConfiguration" 
}; 
WebAppContext webapp = new WebAppContext(); 
webapp.setConfigurationClasses(configurationClasses); 
webapp.setDescriptor("/path/to/webapp/WEB-INF/web.xml"); 
webapp.setContextPath("/"); 
webapp.setResourceBase("/path/to/webapp"); 
webapp.setClassLoader(Thread.currentThread().getContextClassLoader()); 
+0

Жаль, что вы дико неспецифичны. Я использую Weld, я полагаю, в 'jetty-servlet'. Обновление вопроса сейчас. –

+0

Можете ли вы также поделиться своим «pom.xml»? –

+0

@ VictorSergienko отредактировал с ссылкой на pom.xml gist. – Justin

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