From: Fencer on
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("get-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
From: Fencer on
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
From: Lew on
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
From: Daniel Pitts on
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/>
From: Roedy Green on
On Wed, 27 Jan 2010 16:48:11 +0100, Fencer
<no.i.dont(a)want.mail.from.spammers.com> 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)