Caminho do arquivo para o recurso na nossa pasta war / WEB-INF?

Eu tenho um arquivo na minha pasta war / WEB-INF do meu projeto do Google App Engine. Eu li nas FAQs que você pode ler um arquivo de lá em um contexto de servlet. Eu não sei como formar o caminho para o recurso embora:

/war/WEB-INF/test/foo.txt 

Como eu poderia construir o meu caminho para esse recurso para usar com File (), assim como parece acima?

obrigado

    Há algumas maneiras de fazer isso. Contanto que o arquivo WAR seja expandido (um conjunto de arquivos em vez de um arquivo .war), você pode usar esta API:

     ServletContext context = getContext(); String fullPath = context.getRealPath("/WEB-INF/test/foo.txt"); 

    http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletContext.html#getRealPath(java.lang.String)

    Isso lhe dará o caminho completo do sistema para o recurso que você está procurando. No entanto, isso não funcionará se o Contêiner de Servlet nunca expandir o arquivo WAR (como o Tomcat). O que vai funcionar é usando os methods getResource do ServletContext.

     ServletContext context = getContext(); URL resourceUrl = context.getResource("/WEB-INF/test/foo.txt"); 

    ou, alternativamente, se você quiser apenas o stream de input:

     InputStream resourceContent = context.getResourceAsStream("/WEB-INF/test/foo.txt"); 

    http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletContext.html#getResource(java.lang.String)

    A última abordagem funcionará, seja qual for o Container de Servlet usado e o local onde o aplicativo está instalado. A abordagem anterior só funcionará se o arquivo WAR for descompactado antes da implementação.

    EDIT: O método getContext () é obviamente algo que você teria que implementar. As páginas JSP disponibilizam-no como o campo de context . Em um servlet, você o obtém do seu ServletConfig que é passado para o método init() do servlet. Se você armazená-lo nesse momento, poderá obter seu ServletContext a qualquer momento depois disso.

    Agora, com o Java EE 7, você pode encontrar o recurso mais facilmente com

     InputStream resource = getServletContext().getResourceAsStream("/WEB-INF/my.json"); 

    https://docs.oracle.com/javaee/7/api/javax/servlet/GenericServlet.html#getServletContext–