Hi Chris,

Thank you for the responses, yes those both help. I did a lot of reading
yesterday and was unable to get a clear answer at how this should be done
with JEE, where internal resource files are expected to reside (besides
just generally being under WEB-INF) within the deployment, and the String
value that should be given to ClassLoader.getResource(value) to be able to
look them up. Hence why I reached out to the mailing list.

I have in fact created a properties directory under WEB-INF/classes, for
organizing purposes, and ClassLoader.getResource("properties/xyz.txt") does
appear to be working.

Thank you, Doug

On Tue, Aug 30, 2016 at 11:27 AM, Christopher Schultz <
ch...@christopherschultz.net> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
> Doug,
>
> On 8/29/16 6:29 PM, Doug Gschwind wrote:
> > Hello everyone,
> >
> > I have a file xyz.txt that is specific to my web application which
> > needs to be located by my web application, and I wish to find that
> > resource via getClass().ClassLoader().getResource("xyz.txt") at
> > runtime. The xyz.txt file has no relation to any particular Java
> > class in our application. This resource is used internally by the
> > application and should not be served directly by the container to
> > inbound HTTP requests, therefore I have it located in the
> > WEB-INF/properties directory of my web app deployment. However, the
> > getResource("xyz.txt") method returns null, even though my xyz.txt
> > file is certainly where it is expected to be found.
> >
> > Where should I place this file ideally, and given that file exists
> > in that location, what is the parameter value I need to pass to
> > getResource() so it returns a non-null value?
>
> - From a servlet, you'll want to to:
>
>    URL url =
> getServletContext().getResource("/WEB-INF/properties/xyz.txt");
>
> If you don't have access to any of the servlet API objects, you might
> have to move your properties file into the WEB-INF/classes/ directory,
> or into a JAR file in the WEB-INF/lib/ directory. Then you can do this:
>
> URL url =
> Thread.currentThread().getContextClassLoader().getResource("/xyz.txt");
>
> Then do whatever you want with that URL. For example:
>
> Properties props = new Properties();
> try(InputStream in = url.openStream()) {
>   props.load(in);
> }
>
> // Now use your properties
>
> Hope that helps,
> - -chris
> -----BEGIN PGP SIGNATURE-----
> Comment: GPGTools - http://gpgtools.org
> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
>
> iQIcBAEBCAAGBQJXxdAoAAoJEBzwKT+lPKRYCY8QALl8QQcldOeMXYlgDarYtGOH
> lZQbxlhn+nmzMOHROESGZPefqZUoEQaplWSSivUayYDjvNMGE9SkkO4tbZpy/+Ut
> xZhpj4gjnC6E3gRN8S8SZf3gchNQLIOqtxDjXQBNZakm8jAeNhXDxK0CkiSDfumm
> 8XqaUS1TJulEftoWO8WeGJ1/2dOKOdllCM7HoF0H1jbY1YYnpTbPnl8CBAkhHGa6
> 2BSKgP68kuSxeAnzX5fmE9NsNXbDdPnhWErUZ5xmER+Eol/oxTqaUyT+1q7m7L2R
> XSv+gfvSdp/2Y7pZA44zhlZo1AjgxXBSR28NdldZtMoOR/tUws74fx3XGP7AXud8
> zIrHYxFCpSv4rE4npO3Bcwfi2IXpx9t208Dh9k0U0muF/KAjKeZ7EV2pHc4J3ZpE
> Lw89g9RAKPZlg6WCfARrvRGDXELjoPfmz2l3/AFxAiAygjkdDDECdadEdiqtvX9i
> 7YnnT6uXUW9VIySSSuuA4xFdoJFHbsW2RMrgIEXuF6QnTfha88/sq8loYf5lmsRw
> Cg+zSvU3p2WnMn37y60ABosHoXZdlze5Aq7vh4EMHEmVVLbPvK3J9EPtCCmwHJtq
> a70JGkCZf22pMLFj4rLXu6ZNo39pTdd6RCePUdtlFo4/YyL75VF8g8yXgO2OSiRz
> 6IUM9PXjuI4QipZ4xCyH
> =WqVq
> -----END PGP SIGNATURE-----
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>

Reply via email to