Adobe AEM 6.0에서 작업 중이며 Apache Felix와 Sling에 익숙하며 OSGI 서비스에서 SlingHttpServletRequest의 인스턴스를 가져 오는 방법을 알고 싶습니다. @ 서비스.Adobe AEM, Apache felix OSGI 서비스에서 SlingHttpServletRequest 객체를 얻는 방법
ResourceResolverFactory 또는 SlingRepository에서 요청을받을 수 있습니까?
@Service
@Component(metatype = false)
public class TestServiceImpl implements TestService{
@Reference
private ResourceResolverFactory resourceResolverFactory;
@Reference
private SlingRepository repository;
}
나는 SlingHttpServletRequest 내가 서블릿이 아닌 서비스를 작성해야하지만 내 요구 사항에 대한로 SlingAllMethodsServlet을 확장 클래스 쉽게 사용할 수 있음을 알고 있습니다.
SlingHttpServletRequest가 필요한 이유의 근거는 감사 로깅을 위해 클라이언트의 IP 주소를 가져와야하기 때문입니다.
더 좋은 방법이 있습니까? 또는 적어도 누군가가 그러한 요구 사항을 달성 할 수있는 방향을 수정하도록 나를 도울 수 있습니다.
를 참조하십시오. 이를 얻는 유일한 방법은 SlingServlet 또는 JSP (실제로 서블릿이기도 함)입니다. 내가 이해할 수없는 것은 서비스에 클라이언트 IP가 필요한 이유입니다. 어떻게 서비스 메소드가 트리거되는지, 어쩌면 요청을 메소드 매개 변수로 전달할 수 있습니다. – Thomas
슬링의 서블릿은 실제로 OSGi 서비스입니다. – Markus
Thomas 감사합니다. 로깅 목적을 감사하기 위해 요청 개체에서 IP 주소를 추출해야합니다. 객체를 인수로 전달하면 서비스를 호출 할 때 마지막 선택입니다. 어떤 방법으로 번들 컨텍스트에서 가져 오거나 삽입 된 객체 참조에서 가져와야한다고 기대하고있었습니다. – Homer