2016-06-09 1 views
0

Java 코드에서 다른 사이트 서블릿에 게시하고 있습니다. 그것은 좋은 데이터를 받고 있지만 어떤 이유로 servlet의 resourceResolver가 작동하지 않습니다. jQuery를 사용하여 서블릿에 게시 할 때 작동합니다. 포스트 서블릿 :Java 코드에서 Sling 서블릿에 게시 - ResourceResolver가 작동하지 않습니다.

String data = "data"; 
    String dataString = "data=" + data; 
    byte[] dataStringBytes = dataString.getBytes(StandardCharsets.UTF_8); 
    HttpURLConnection connection = (HttpURLConnection) new URL("http://example:4502/bin/servlet").openConnection(); 
    connection.setDoOutput(true); 
    connection.setRequestMethod("POST"); 
    DataOutputStream writer = new DataOutputStream(connection.getOutputStream()); 
    writer.write(dataStringBytes); 
    writer.flush(); 
    writer.close(); 

코드 조각을 서블릿에서

@Override 
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException { 

    // Only works when posted from jQuery??? 
    ResourceResolver resourceResolver = request.getResource().getResourceResolver(); 
    Session session = resourceResolver.adaptTo(Session.class); 
    PageManager pageManager = resourceResolver.adaptTo(PageManager.class); 
} 
+0

https://helpx.adobe.com/experience-manager/using/HttpClient_AEM.html –

+2

설정 한 보안 권한을 확인하십시오. 액세스 권한이 있는지 확인하십시오. – Peter

답변

1

해당 자원에 액세스 할 수 있습니다 익명해야합니다. 사용 PageManagerFactory API)를 대신 AdaptTo의 PageManager를을 (얻기 위해 https://docs.adobe.com/docs/en/cq/5-6-1/javadoc/com/day/cq/wcm/api/PageManagerFactory.html

+0

건배. 같은 문제가있는 사람은 누구나이 문제를 확인하십시오. http://stackoverflow.com/questions/31350548/resourceresolverfactory-getserviceresourceresolver-throws-exception-in-aem-6-1 – wheels

0

this 포스트와 this 게시물을 읽어 보시기 바랍니다. 슬링 서블릿에서 자원 분석기에 액세스하는 이상적인 방법은 시스템 사용자를 작성하고 getServiceResourceResolver 메소드를 호출하는 것입니다. 이것은 특히 사용자가 익명 일 때 디스패처에서 서블릿을 치는 동안 중요합니다. 권한 문제를 피하려면 유효한 시스템 사용자로 리소스에 액세스해야합니다.

이 리소스 분석기는 사용자의 필요에 따라 PageManager 나 TagManager 또는 Session 등에 적용될 수 있습니다.

관련 문제