1

글래스 피쉬와 부두 서블릿 모두 순수한 JAX-RS 응용 프로그램이 있습니다. Quartz 작업에 약간의 콩을 주입하려고합니다.Jersey Bean을 Weld의 Quartz 작업에 삽입하려면 어떻게해야합니까?

나는 작업 필드에 @javax.inject.Inject으로 주석을 달았지만, 나는 또한 작업 공장을 컨테이너에서 사용 가능하게해야한다고 믿는다. 그 반대도 마찬가지다.

어떻게 수행합니까?

+0

Victor는 다른 콩에 @ 주입 작업을 원하십니까? – Justin

+0

아니요, 다른 길은 없습니다. 기본적으로 로거와 DAO가 필요합니다. –

답변

0

안녕하세요 빅터 귀하의 응용 프로그램에 대해 더 자세히 설명하지 않고 서블릿 컨테이너에서 실행 중이라고 가정합니다. "순수한"JAX-RS 응용 프로그램을 사용하여이를 수행 할 수있는 방법은 없습니다.

그러나 CDI (Weld 또는 OpenWebBeans)를 사용하는 것이 좋습니다. 그런 다음 Deltaspike를 사용하여 Quartz 작업 내의 요청 컨텍스트가 요청 범위 Bean에 대한 참조를 얻도록 할 수있다. 서블릿 컨테이너에서 용접을 사용

는 HTTP 요청의 외부 요청 컨텍스트를 활성화하는 방법에 대한 가이드는 기본적으로 here

수 있습니다 매우 simple

당신 아닌 수정 작업에 @RequestScoped 콩을 주입 (이 수 HTTP 요청이 없으므로 요청 컨텍스트가 없음). 이 문제를 해결하려면 위의 링크를 따라 요청 컨텍스트를 활성화하거나 (아마도 내 접근법) JAX RS 빈 (기본적으로 래퍼)에 @Dependent 범위의 Bean (본질적으로 래퍼)을 삽입하면 쉽게 참조를 얻을 수 있습니다 석영 작업의 @Dependent 범위 콩에.

부두 내에서 웰드 앤 저지를 실행하는 경우 여기 내 web.xmlpom.xml입니다. 부두 - 플러스, 부두 -jndi 및 용접 의존성이 필요합니다. 여기

여기에, 나는 SE 응용 프로그램 내 포함 된 컨테이너 부두를 시작으로하지만 나는이 방법을 사용하지 않는, 부두 내에서 JNDI 설정보기에 대한 일부 info입니다 내가 뭘의 코드입니다 :

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

매우 구체적이지 않은 것에 대해 유감스럽게 생각합니다. 나는'jetty-servlet'에서 Weld를 사용한다고 믿습니다. 질문을 지금 업데이트 중입니다. –

+0

'pom.xml '도 공유 할 수 있습니까? –

+0

@VictorSergienko는 pom.xml 요지로의 링크로 편집 됨. – Justin

관련 문제