Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Java > getResourceAsStream() problem

Reply
Thread Tools

getResourceAsStream() problem

 
 
Fencer
Guest
Posts: n/a
 
      01-27-2010
Hello, I have a problem with getResourceAsStream().

I'm using these tools: Eclipse JEE edition version 3.5.1 with the Apache
CXF plugin and Apache Tomcat version 6.0.20. Java is version 6. This is
under Windows.

I've written a very simple JAX-WS web service, here's the complete code:

package bioweb;

import java.rmi.Remote;
import java.rmi.RemoteException;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService(name="BioWebInterface", targetNamespace="http://bioweb/")
public interface BioWebInterface extends Remote {
@WebMethod(operationName="sayHello", action="urn:SayHello")
public String sayHello() throws RemoteException;
}

package bioweb;

import java.io.InputStream;
import java.rmi.RemoteException;

import javax.annotation.PostConstruct;
import javax.jws.WebService;

@WebService(targetNamespace="http://bioweb/",
endpointInterface="bioweb.BioWebInterface", portName="BioWebPort",
serviceName="BioWebService")
public class BioWeb implements BioWebInterface {

@Override
public String sayHello() throws RemoteException {
return "Hello from the BioWeb Web Service!";
}


@PostConstruct
protected void init() {
System.out.println("I'm in the postconstruct method.");

InputStream is1 =
getClass().getClassLoader().getResourceAsStream("g et-all-model-links.xquery");
InputStream is2 =
BioWeb.class.getClassLoader().getResourceAsStream( "get-all-model-links.xquery");

if (is1 != null && is2 != null) {
System.out.println("Successfully loaded resource using both
methods!");
}
else if (is1 != null) {
System.out.println("Successfully loaded resource using method
1.");
}
else if (is2 != null) {
System.out.println("Successfully loaded resource using method
2.");
}
else {
System.err.println("Not successful at all in loading the
resource!");
}
}


/**
* @param args
*/
public static void main(String[] args) {
new BioWeb().init();
}
}

I've created folder called xqueries and added it to the classpath (under
project properties->java build path->libraries tab->add class folder
button and in it I have an XQuery file named get-all-model-links.xquery
(will be lots more later).

When I run the BioWeb class like a normal Java program (by invoking
main(), which calls init(), I can load the XQuery resource fine, the
output is:
I'm in the postconstruct method.
Successfully loaded resource using both methods!

However, when run as a service (then Tomcat calls the init() method due
to its @PostConstruct annotation), the loading of the resource fails.
The output is:
I'm in the postconstruct method.
Not successful at all in loading the resource!

It seems that the class folder I added isn't visible anymore or maybe
the "URL:s" need to be altered when in this context. I'm very new at
this web stuff and I need help, I've had this problem for two days now.
I'm doing all the interfacing with Tomcat via Eclipse btw, and I haven't
really tampered with any settings for it.

Thanks for reading and for any replies!

- Fencer
 
Reply With Quote
 
 
 
 
Fencer
Guest
Posts: n/a
 
      01-27-2010
On 2010-01-27 16:02, Fencer wrote:
> Hello, I have a problem with getResourceAsStream().

[snip my OP]

I believe I solved this problem!

- Fencer
 
Reply With Quote
 
 
 
 
Daniel Pitts
Guest
Posts: n/a
 
      01-27-2010
On 1/27/2010 7:48 AM, Fencer wrote:
> On 2010-01-27 16:02, Fencer wrote:
>> Hello, I have a problem with getResourceAsStream().

> [snip my OP]
>
> I believe I solved this problem!

It is often considered courteous to explain how you solved your problem.

Others may find your post while looking into a similar problem, and
would benefit from your explanation.
--
Daniel Pitts' Tech Blog: <http://virtualinfinity.net/wordpress/>
 
Reply With Quote
 
Lew
Guest
Posts: n/a
 
      01-27-2010
Fencer wrote:
> Hello, I have a problem with getResourceAsStream().
>
> [snip my OP]
>
> I believe I solved this problem!
>


Thank you so much for sharing the solution so that others besides
yourself may benefit!

--
Lew
 
Reply With Quote
 
Roedy Green
Guest
Posts: n/a
 
      01-28-2010
On Wed, 27 Jan 2010 16:48:11 +0100, Fencer
<(E-Mail Removed)> wrote, quoted or indirectly
quoted someone who said :

>
>I believe I solved this problem!


Some day someone will have the same problem as you, find you question
in Google then curse you for refusing to share your solution.

--
Roedy Green Canadian Mind Products
http://mindprod.com
Computers are useless. They can only give you answers.
~ Pablo Picasso (born: 1881-10-25 died: 1973-04-08 at age: 91)
 
Reply With Quote
 
Fencer
Guest
Posts: n/a
 
      01-28-2010
On 2010-01-27 16:48, Fencer wrote:
> On 2010-01-27 16:02, Fencer wrote:
>> Hello, I have a problem with getResourceAsStream().

> [snip my OP]
>
> I believe I solved this problem!
>
> - Fencer


Hello again. I wish to offer my sincere apologies for not specifying the
details of my solution in my previous post.

The problem turned out to be not in the actual Java code but in how I
was using my tools. Adding a directory to the classpath in the Eclipse
project settings didn't propagate to Tomcat in my context. What I did
was to add the directory to the classpath to Tomcat's launch
configuration under Eclipse. That solved it!

If you you doubleclick on the Tomcat server under the Server tab (in the
window that usually holds tabs like console, problems etc, I'm not sure
what it's called), an "Overview" of settings should open. There's a link
there "Open Launch Configuration" which opens a configuration dialog.
The dialog has a tab called "classpath" and you can add your entry
there, under "User Entries".

Again, I apologise for not writing this the first time around and thanks
to those who reminded me to do so.

- Fencer
 
Reply With Quote
 
Lew
Guest
Posts: n/a
 
      01-28-2010
On Jan 28, 10:26*am, Fencer <(E-Mail Removed)>
wrote:
> On 2010-01-27 16:48, Fencer wrote:
>
> > On 2010-01-27 16:02, Fencer wrote:
> >> Hello, I have a problem with getResourceAsStream().

> > [snip my OP]

>
> > I believe I solved this problem!

>
> > - Fencer

>
> Hello again. I wish to offer my sincere apologies for not specifying the
> details of my solution in my previous post.
>
> The problem turned out to be not in the actual Java code but in how I
> was using my tools. Adding a directory to the classpath in the Eclipse
> project settings didn't propagate to Tomcat in my context. What I did
> was to add the directory to the classpath to Tomcat's launch
> configuration under Eclipse. That solved it!
>
> If you you doubleclick on the Tomcat server under the Server tab (in the
> window that usually holds tabs like console, problems etc, I'm not sure
> what it's called), an "Overview" of settings should open. There's a link
> there "Open Launch Configuration" which opens a configuration dialog.
> The dialog has a tab called "classpath" and you can add your entry
> there, under "User Entries".
>


You're supposed to include libraries needed by a web app in the "lib/"
directory of the web app.

You shouldn't entirely depend on the IDE to specify a class path. You
should be able to deploy the application from the command line.

--
Lew
 
Reply With Quote
 
Fencer
Guest
Posts: n/a
 
      01-28-2010
On 2010-01-28 20:29, Lew wrote:
>>

>
> You're supposed to include libraries needed by a web app in the "lib/"
> directory of the web app.
>
> You shouldn't entirely depend on the IDE to specify a class path. You
> should be able to deploy the application from the command line.


Thanks for your reply, Lew, and you make a dood point. There are several
jar-files in my WebContent->WEB-INF->lib folder, but if I put my XQuery
file in there, getResourceAsStream() doesn't find it

If I could make it work without adding a directory to classpath like I'm
doing that would be even better!

- Fencer
 
Reply With Quote
 
Lew
Guest
Posts: n/a
 
      01-29-2010
Fencer wrote:
> Thanks for your reply, Lew, and you make a dood point. There are several
> jar-files in my WebContent->WEB-INF->lib folder, but if I put my XQuery
> file in there, getResourceAsStream() doesn't find it
>
> If I could make it work without adding a directory to classpath like I'm
> doing that would be even better!


There are already several directories in your class path for a web app.

Is your "XQuery file" a JAR? No? Then it doesn't go in the "lib/" directory.

The root directory of your application ("application-name/") and the classes
directory ("application-name/WEB-INF/classes/") are already in your path. Put
your resource relative to one of those.

--
Lew
 
Reply With Quote
 
Roedy Green
Guest
Posts: n/a
 
      01-29-2010
On Thu, 28 Jan 2010 16:26:34 +0100, Fencer
<(E-Mail Removed)> wrote, quoted or indirectly
quoted someone who said :

>
>Again, I apologise for not writing this the first time around and thanks
>to those who reminded me to do so.


Thank you for sharing your solution rather than getting defensive as a
normal person would.
--
Roedy Green Canadian Mind Products
http://mindprod.com
Computers are useless. They can only give you answers.
~ Pablo Picasso (born: 1881-10-25 died: 1973-04-08 at age: 91)
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Problem problem problem :( Need Help Mike ASP General 2 05-11-2004 08:36 AM



Advertisments