You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@geronimo.apache.org by Cedric Hurst <ce...@gmail.com> on 2008/03/30 18:52:28 UTC
ClassLoader.getSystemResourceAtStream() within Geronimo utility
JAR?
I have a utility JAR which reads from a flat file ("cities.txt") which is
contained within the JAR itself. This file is used to initially populate a
collection in memory. I'm using the ClassLoader.getSystemResourceAsStream()
method to retrieve this flat file as an InputStream within my utility JAR
class. In Java SE, I can add the utility JAR the the classpath of a client
and it will find the flat file just fine. But if I try to deploy this JAR
to Geronimo and use it within a web application,
ClassLoader.getSystemResourcesAsStream() returns null. I'm guessing
Geronimo is doing some tricky things which involve overriding the system
classloader. Here's the stack trace.
java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:82)
at java.io.InputStreamReader.<init>(InputStreamReader.java:89)
at util.cityLookup.Lookup.init(Lookup.java:21)
at util.cityLookup.Lookup.checkInitilization(Lookup.java:45)
at util.cityLookup.Lookup.citiesBeginningWith(Lookup.java:52)
at web.jsf.CitySuggester.getCityList(CitySuggester.java:10)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at
org.apache.myfaces.el.convert.MethodExpressionToMethodBinding.invoke(MethodExpressionToMethodBinding.java:73)
... 30 more
I've attached the JAR file. Is there an alternate means of accessing the
flat file within my Lookup class (without using absolute paths)?
http://www.nabble.com/file/p16384195/cityLookup-1.0-NABBLE.jar
cityLookup-1.0-NABBLE.jar
--
View this message in context: http://www.nabble.com/ClassLoader.getSystemResourceAtStream%28%29-within-Geronimo-utility-JAR--tp16384195s134p16384195.html
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.
Re: ClassLoader.getSystemResourceAtStream() within Geronimo utility
JAR?
Posted by Cedric Hurst <ce...@gmail.com>.
That solved it. Thank you.
djencks wrote:
>
> You app is not loaded in the system classloader in geronimo, and
> almost certainly not in any other app server or non-trivial framework
> either.
>
> You should be using
> getClass().getClassLoader().getResourceAsStream()
>
> or
>
> MyClass.class.getClassLoader().getResourceAsStream().
>
> hope this helps
> david jencks
>
> On Mar 30, 2008, at 9:52 AM, Cedric Hurst wrote:
>
>>
>> I have a utility JAR which reads from a flat file ("cities.txt")
>> which is
>> contained within the JAR itself. This file is used to initially
>> populate a
>> collection in memory. I'm using the
>> ClassLoader.getSystemResourceAsStream()
>> method to retrieve this flat file as an InputStream within my
>> utility JAR
>> class. In Java SE, I can add the utility JAR the the classpath of
>> a client
>> and it will find the flat file just fine. But if I try to deploy
>> this JAR
>> to Geronimo and use it within a web application,
>> ClassLoader.getSystemResourcesAsStream() returns null. I'm guessing
>> Geronimo is doing some tricky things which involve overriding the
>> system
>> classloader. Here's the stack trace.
>>
>> java.lang.NullPointerException
>> at java.io.Reader.<init>(Reader.java:82)
>> at java.io.InputStreamReader.<init>(InputStreamReader.java:89)
>> at util.cityLookup.Lookup.init(Lookup.java:21)
>> at util.cityLookup.Lookup.checkInitilization(Lookup.java:45)
>> at util.cityLookup.Lookup.citiesBeginningWith(Lookup.java:52)
>> at web.jsf.CitySuggester.getCityList(CitySuggester.java:10)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke
>> (NativeMethodAccessorImpl.java:79)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke
>> (DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:618)
>> at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
>> at org.apache.el.MethodExpressionImpl.invoke
>> (MethodExpressionImpl.java:276)
>> at
>> org.apache.myfaces.el.convert.MethodExpressionToMethodBinding.invoke
>> (MethodExpressionToMethodBinding.java:73)
>> ... 30 more
>>
>>
>> I've attached the JAR file. Is there an alternate means of
>> accessing the
>> flat file within my Lookup class (without using absolute paths)?
>>
>> http://www.nabble.com/file/p16384195/cityLookup-1.0-NABBLE.jar
>> cityLookup-1.0-NABBLE.jar
>> --
>> View this message in context: http://www.nabble.com/
>> ClassLoader.getSystemResourceAtStream%28%29-within-Geronimo-utility-
>> JAR--tp16384195s134p16384195.html
>> Sent from the Apache Geronimo - Users mailing list archive at
>> Nabble.com.
>>
>
>
>
--
View this message in context: http://www.nabble.com/ClassLoader.getSystemResourceAtStream%28%29-within-Geronimo-utility-JAR--tp16384195s134p16384965.html
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.
Re: ClassLoader.getSystemResourceAtStream() within Geronimo utility JAR?
Posted by David Jencks <da...@yahoo.com>.
You app is not loaded in the system classloader in geronimo, and
almost certainly not in any other app server or non-trivial framework
either.
You should be using
getClass().getClassLoader().getResourceAsStream()
or
MyClass.class.getClassLoader().getResourceAsStream().
hope this helps
david jencks
On Mar 30, 2008, at 9:52 AM, Cedric Hurst wrote:
>
> I have a utility JAR which reads from a flat file ("cities.txt")
> which is
> contained within the JAR itself. This file is used to initially
> populate a
> collection in memory. I'm using the
> ClassLoader.getSystemResourceAsStream()
> method to retrieve this flat file as an InputStream within my
> utility JAR
> class. In Java SE, I can add the utility JAR the the classpath of
> a client
> and it will find the flat file just fine. But if I try to deploy
> this JAR
> to Geronimo and use it within a web application,
> ClassLoader.getSystemResourcesAsStream() returns null. I'm guessing
> Geronimo is doing some tricky things which involve overriding the
> system
> classloader. Here's the stack trace.
>
> java.lang.NullPointerException
> at java.io.Reader.<init>(Reader.java:82)
> at java.io.InputStreamReader.<init>(InputStreamReader.java:89)
> at util.cityLookup.Lookup.init(Lookup.java:21)
> at util.cityLookup.Lookup.checkInitilization(Lookup.java:45)
> at util.cityLookup.Lookup.citiesBeginningWith(Lookup.java:52)
> at web.jsf.CitySuggester.getCityList(CitySuggester.java:10)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke
> (NativeMethodAccessorImpl.java:79)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke
> (DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:618)
> at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
> at org.apache.el.MethodExpressionImpl.invoke
> (MethodExpressionImpl.java:276)
> at
> org.apache.myfaces.el.convert.MethodExpressionToMethodBinding.invoke
> (MethodExpressionToMethodBinding.java:73)
> ... 30 more
>
>
> I've attached the JAR file. Is there an alternate means of
> accessing the
> flat file within my Lookup class (without using absolute paths)?
>
> http://www.nabble.com/file/p16384195/cityLookup-1.0-NABBLE.jar
> cityLookup-1.0-NABBLE.jar
> --
> View this message in context: http://www.nabble.com/
> ClassLoader.getSystemResourceAtStream%28%29-within-Geronimo-utility-
> JAR--tp16384195s134p16384195.html
> Sent from the Apache Geronimo - Users mailing list archive at
> Nabble.com.
>
Re: ClassLoader.getSystemResourceAtStream() within Geronimo utility
JAR?
Posted by Cedric Hurst <ce...@gmail.com>.
Thanks for the prompt reply, Vasmi. I've tried both adding the jar file as a
module in the app server (and defining the dependency in my
geronimo-web.xml), and I've also tried including the JAR in the WEB-INF\lib
folder of the war file as well. I've attached a war file which uses the
latter method. To reproduce the error, try accessing
http://localhost:8080/cityLookup/CityLookupServlet?s=chi
http://www.nabble.com/file/p16384415/cityLookup.war cityLookup.war
Vamsavardhana Reddy-2 wrote:
>
> Are you packaging this jar in WEB-INF\lib directory in the war file?
>
> ++Vamsi
>
> On Sun, Mar 30, 2008 at 10:22 PM, Cedric Hurst <ce...@gmail.com>
> wrote:
>
>>
>> I have a utility JAR which reads from a flat file ("cities.txt") which is
>> contained within the JAR itself. This file is used to initially populate
>> a
>> collection in memory. I'm using the
>> ClassLoader.getSystemResourceAsStream
>> ()
>> method to retrieve this flat file as an InputStream within my utility JAR
>> class. In Java SE, I can add the utility JAR the the classpath of a
>> client
>> and it will find the flat file just fine. But if I try to deploy this
>> JAR
>> to Geronimo and use it within a web application,
>> ClassLoader.getSystemResourcesAsStream() returns null. I'm guessing
>> Geronimo is doing some tricky things which involve overriding the system
>> classloader. Here's the stack trace.
>>
>> java.lang.NullPointerException
>> at java.io.Reader.<init>(Reader.java:82)
>> at java.io.InputStreamReader.<init>(InputStreamReader.java:89)
>> at util.cityLookup.Lookup.init(Lookup.java:21)
>> at util.cityLookup.Lookup.checkInitilization(Lookup.java:45)
>> at util.cityLookup.Lookup.citiesBeginningWith(Lookup.java:52)
>> at web.jsf.CitySuggester.getCityList(CitySuggester.java:10)
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> at
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java
>> :79)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(
>> DelegatingMethodAccessorImpl.java:43)
>> at java.lang.reflect.Method.invoke(Method.java:618)
>> at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
>> at org.apache.el.MethodExpressionImpl.invoke(
>> MethodExpressionImpl.java:276)
>> at
>> org.apache.myfaces.el.convert.MethodExpressionToMethodBinding.invoke(
>> MethodExpressionToMethodBinding.java:73)
>> ... 30 more
>>
>>
>> I've attached the JAR file. Is there an alternate means of accessing the
>> flat file within my Lookup class (without using absolute paths)?
>>
>> http://www.nabble.com/file/p16384195/cityLookup-1.0-NABBLE.jar
>> cityLookup-1.0-NABBLE.jar<http://www.nabble.com/file/p16384195/cityLookup-1.0-NABBLE.jarcityLookup-1.0-NABBLE.jar>
>> --
>> View this message in context:
>> http://www.nabble.com/ClassLoader.getSystemResourceAtStream%28%29-within-Geronimo-utility-JAR--tp16384195s134p16384195.html
>> Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.
>>
>>
>
>
--
View this message in context: http://www.nabble.com/ClassLoader.getSystemResourceAtStream%28%29-within-Geronimo-utility-JAR--tp16384195s134p16384415.html
Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.
Re: ClassLoader.getSystemResourceAtStream() within Geronimo utility JAR?
Posted by Vamsavardhana Reddy <c1...@gmail.com>.
Are you packaging this jar in WEB-INF\lib directory in the war file?
++Vamsi
On Sun, Mar 30, 2008 at 10:22 PM, Cedric Hurst <ce...@gmail.com>
wrote:
>
> I have a utility JAR which reads from a flat file ("cities.txt") which is
> contained within the JAR itself. This file is used to initially populate
> a
> collection in memory. I'm using the ClassLoader.getSystemResourceAsStream
> ()
> method to retrieve this flat file as an InputStream within my utility JAR
> class. In Java SE, I can add the utility JAR the the classpath of a
> client
> and it will find the flat file just fine. But if I try to deploy this JAR
> to Geronimo and use it within a web application,
> ClassLoader.getSystemResourcesAsStream() returns null. I'm guessing
> Geronimo is doing some tricky things which involve overriding the system
> classloader. Here's the stack trace.
>
> java.lang.NullPointerException
> at java.io.Reader.<init>(Reader.java:82)
> at java.io.InputStreamReader.<init>(InputStreamReader.java:89)
> at util.cityLookup.Lookup.init(Lookup.java:21)
> at util.cityLookup.Lookup.checkInitilization(Lookup.java:45)
> at util.cityLookup.Lookup.citiesBeginningWith(Lookup.java:52)
> at web.jsf.CitySuggester.getCityList(CitySuggester.java:10)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java
> :79)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:618)
> at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
> at org.apache.el.MethodExpressionImpl.invoke(
> MethodExpressionImpl.java:276)
> at
> org.apache.myfaces.el.convert.MethodExpressionToMethodBinding.invoke(
> MethodExpressionToMethodBinding.java:73)
> ... 30 more
>
>
> I've attached the JAR file. Is there an alternate means of accessing the
> flat file within my Lookup class (without using absolute paths)?
>
> http://www.nabble.com/file/p16384195/cityLookup-1.0-NABBLE.jar
> cityLookup-1.0-NABBLE.jar<http://www.nabble.com/file/p16384195/cityLookup-1.0-NABBLE.jarcityLookup-1.0-NABBLE.jar>
> --
> View this message in context:
> http://www.nabble.com/ClassLoader.getSystemResourceAtStream%28%29-within-Geronimo-utility-JAR--tp16384195s134p16384195.html
> Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.
>
>