2016-08-26 5 views
0

Может кто-нибудь скажет мне, как создать ссылку для загрузки файла jar, который находится под папкой /WEB-INF/lib от apache-tomcat. Я в состоянии получить следующую банку местоположение файла:Как создать URL-адрес для загрузки файла jar, расположенный под папкой WEB-INF/lib apache-tomcat с удаленного сервера?

jar:file:/var/lib/tomcat7/webapps/cs/WEB-INF/lib/commons-fileupload-1.3.1.jar!/org/apache/commons/fileupload/disk/DiskFileItem.class 

Я хочу построить скачать URL для этого банка файла, так что я могу загрузить с удаленного сервера, на мой локальный жесткий диск.

У меня следующий код для поиска Java-версии:

public static Map<String, String> getJarVersions(ICS ics, ServletContext context) 
    { 

    ServletContextResource resource = new ServletContextResource(context, "/WEB-INF/lib/"); 

    File file = null; 
    try 
    { 
     file = resource.getFile(); 
    } 
    catch (IOException e) 
    { 
     log.error("Error reading /WEB-INF/lib/ directory. ", e); 
     return new HashMap(0); 
    } 
    File[] jarFiles = file.listFiles(); 
    Map<String, String> jarNameVersion = new HashMap(); 
    File[] arr$ = jarFiles;int len$ = arr$.length; 
    for (int i$ = 0; i$ < len$;) 
    { 
     File jarFile = arr$[i$]; 

     JarFile jarfile = null; 
     Manifest manifest = null; 
     try 
     { 
     jarfile = new JarFile(jarFile); 
     manifest = jarfile.getManifest(); 
     if (manifest != null) 
     { 
      Attributes attrs = manifest.getMainAttributes(); 
      String version = attrs.getValue("Implementation-Version"); 
      String vendor = attrs.getValue("Implementation-Vendor"); 
      if (vendor == null) { 
      vendor = "Not applicable"; 
      } 
      if (version == null) { 
      version = "Not applicable"; 
      } 
      version = version + " : " + vendor; 
      jarNameVersion.put(jarFile.getName(), version); 
     } 
     else 
     { 
      jarNameVersion.put(jarFile.getName()); 
     } 
     if (jarfile != null) { 
      try 
      { 
      jarfile.close(); 
      } 
      catch (IOException e) 
      { 
      log.error("Error thrown while closing the jar file "); 
      } 
     } 
     i$++; 
     } 
     catch (IOException e) 
     { 
     log.error("Error reading JAR/MANIFEST file . ", e); 
     } 
     finally 
     { 
     if (jarfile != null) { 
      try 
      { 
      jarfile.close(); 
      } 
      catch (IOException e) 
      { 
      log.error("Error thrown while closing the jar file "); 
      } 
     } 
     } 
    } 
    return jarNameVersion; 
    } 
} 
+0

Почему бы не переместить банки в место статического содержимого и оттуда оттуда? Это будет безопаснее – farrellmr

+0

это только для внутреннего использования .. не для того, чтобы служить публике .. мы заходим в определенное приложение, где с программным обеспечением у меня есть доступ к местоположению папки jar. Я могу найти jar-версию и детали манифеста jar, но почему-то не знаю, как построить jar download url –

ответ

0

Вы не можете получить доступ непосредственно к любому ресурсу в папке WEB-INF, так как он защищен котом из запросов доступа URL.

Если вам нужно получить доступ к любому ресурсу из WEB-INF, вы должны создать компонент java (сервлет, фильтр, контроллер и т. Д.) Для доступа к этим элементам WEB-INF и вернуть их.

+0

Да, у меня есть реализация, чтобы найти версию jar. Я редактировал свой вопрос, чтобы включить код для поиска jar-версии, но я не знаю, как я могу создать ссылку для загрузки jar, чтобы при щелчке я могу загрузить файл jar. Этот код написан в JSP scriptlet –