2015-03-11 2 views
1

У меня есть два узла в рабочей среде. Я разместил файлы PDF на одном сервере и хочу прочитать его с обоих серверов. когда я вызываю метод «file» напрямую pdf, отображается в браузере, но когда я вызываю «pdfFiles», в браузере ничего не отображается.Прочитать pdf-файлы, размещенные на одном сервере с другого сервера

public Resolution file(){ 
    try { 
     final HttpServletRequest request = getContext().getRequest(); 
     String fileName = (String) request.getParameter("file"); 

     File file = new File("pdf file directory ex /root/pdffiles/" + fileName); 

     getContext().getResponse().setContentType("application/pdf"); 
     getContext().getResponse().addHeader("Content-Disposition", 
       "inline; filename=" + fileName); 
     FileInputStream streamIn = new FileInputStream(file); 

     BufferedInputStream buf = new BufferedInputStream(streamIn); 
     int readBytes = 0; 
     ServletOutputStream stream = getContext().getResponse().getOutputStream(); 
     // read from the file; write to the ServletOutputStream 
     while ((readBytes = buf.read()) != -1) 
      stream.write(readBytes); 

    } catch (Exception exc) { 
     LOGGER.logError("reports", exc); 
    } 
    return null; 
} 

public Resolution pdfFile() { 
    final HttpServletRequest request = getContext().getRequest(); 
    final HttpClient client = new HttpClient(); 
    try { 
     String fileName = (String) request.getParameter("file"); 
     final String url = "http://" + serverNameNode1 //having pdf files 
       + "/test/sm.action?reports&file=" + fileName; 

     final PostMethod method = new PostMethod(url); 

     try { 
      client.executeMethod(method); 
     } finally { 
      method.releaseConnection(); 
     } 

    } catch (final Exception e) { 
     LOGGER.logError("pdfReports", "error occured2 " + e.getMessage()); 
    } 
    return null; 
} 
+0

, когда я вызываю метод 'pdfFile()' он ударил url n функцию вызова 'file()'. Я не хочу, чтобы поток возвращался к методу pdfFile(). – yusuf

ответ

0

Включено под частью кода после 'client.executeMethod (method);' в методе pdfFile(), и это работает для меня.

buf = new BufferedInputStream(method.getResponseBodyAsStream()); 
      int readBytes = 0; 
      stream = getContext().getResponse().getOutputStream(); 
      // write to the ServletOutputStream 
      while ((readBytes = buf.read()) != -1) 
       stream.write(readBytes); 
Смежные вопросы