2015-01-13 3 views
0

XML 파일의 X 시간마다 디렉토리를 폴링 한 다음 JCR로 특정 형식으로 가져올 수 있습니까? CQ5가이 기능을 제거했다고 나는 믿는다. 또한 Adobe는 필요로하는 외로운 발바닥을 유용하게 활용할 수 있습니까? 감사합니다CQ5 FTP XML 파일

답변

0

저는 그러한 기능이 실제로 CQ5 또는 AEM에 있다고 생각하지 않습니다. 일반적으로 수행 할 작업은 com.day.cq.polling.importer.Importer 인터페이스의 구현을 만든 다음 피드 가져 오기 도구 (http://localhost:4502/etc/importers/polling.html)를 통해 가져 오기 프로세스를 구성하는 것입니다. (주 - 이름이 피드에만입니다 의미하지만, 이러한 경우가

현재 매우 간단한 사용자 정의 수입의 예를 볼 수있다 : 이것은 단지에서 파일을 가져 https://github.com/Adobe-Consulting-Services/acs-aem-commons/blob/master/bundle/src/main/java/com/adobe/acs/commons/wcm/impl/FileImporter.java

합니다. 파일 시스템에 저장하고 저장소에 저장

0

옛날 옛적에 비슷한 요구 사항이 있었고 Jsch을 사용하여 sFTP를 통해 파일을 저장하고 파일을 저장소에 저장했습니다.이 서비스는 scheduled job에서 호출되어 xml을 처리합니다 필요에 따라

jtch를 사용하여 실제로 sftp를 통해 파일을 검색 한 다음 repo에 저장하는 코드와 관련이 있습니다.

JSch jsch = new JSch(); 

     log.info(
       "connecting to {}@{}:{}", 
       new String[] {parameters.getUsername(), parameters.getHost(), String.valueOf(parameters.getPort()) }); 

     Session session = jsch.getSession(parameters.getUsername(), parameters.getHost(), parameters.getPort()); 
     session.setConfig("StrictHostKeyChecking", "no"); 
     session.setPassword(parameters.getPassword()); 
     session.connect(); 

     Channel channel = session.openChannel(CHANNEL_SFTP); 
     channel.connect(); 
     ChannelSftp sftpChannel = (ChannelSftp) channel; 

     log.debug("change directory to {}", parameters.getPath()); 
     sftpChannel.cd(parameters.getPath()); 

     log.debug("get file {}", parameters.getFilename()); 
     InputStream stream = sftpChannel.get(parameters.getFilename()); 

     saveStreamToRepository(stream, resourceResolver, path, parameters.getFilename()); 

     sftpChannel.exit(); 
     session.disconnect(); 

     log.info("disconnecting from sFTP after retrieving file {}.", parameters.getFilename()); 

     return path + "/" + parameters.getFilename(); 

private void saveStreamToRepository(InputStream stream, ResourceResolver resourceResolver, String path, 
      String fileName) throws RepositoryException { 
     javax.jcr.Session jcrSession = resourceResolver.adaptTo(javax.jcr.Session.class); 
     Node pathNode = jcrSession.getNode(path); 
     Node fileNode = pathNode.addNode(fileName, JcrConstants.NT_FILE); 
     Node resNode = fileNode.addNode(JcrConstants.JCR_CONTENT, JcrConstants.NT_RESOURCE); 
     resNode.setProperty(JcrConstants.JCR_LASTMODIFIED, Calendar.getInstance()); 

     Binary binary = jcrSession.getValueFactory().createBinary(stream); 
     resNode.setProperty(JcrConstants.JCR_DATA, binary); 

     jcrSession.save(); 
    }