getResourceAsStream() problem
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