Hello
I've deployed a WebService using Http+Jsr181 components. One of the WS
operations needs to load a .properties file. Bassically this is the ws
operation code:
/**
* Web service operation
*/
@WebMethod(operationName = "getTicket")
public String getTicket(@WebParam(name = "username") String username,
@WebParam(name = "password") String password) throws Exception {
try {
InputStream fileStream =
es.intecna.persistence.ContextFactory.class.getClassLoader().getResourceAsStream("ldap/ldap.properties");
Properties config = new Properties();
config.load(fileStream);
}
catch (Exception e) {
e.printStackTrace();
}
return null;
}
When I try to invoke the webservice operation with a Client, I get a NPE in
Servicemix console:
INFO - AegisBindingProvider - xsi:type="" was specified, but no
corresponding Type was registered; defaulting to
{http://www.w3.org/2001/XMLSchema}string
INFO - AegisBindingProvider - xsi:type="" was specified, but no
corresponding Type was registered; defaulting to
{http://www.w3.org/2001/XMLSchema}string
java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:365)
at java.util.Properties.load(Properties.java:293)
at
es.intecna.webservices.Authentication.getTicket(Authentication.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.codehaus.xfire.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:54)
at
org.codehaus.xfire.service.binding.ServiceInvocationHandler.sendMessage(ServiceInvocationHandler.java:271)
at
org.codehaus.xfire.service.binding.ServiceInvocationHandler$1.run(ServiceInvocationHandler.java:84)
at
org.codehaus.xfire.service.binding.ServiceInvocationHandler.execute(ServiceInvocationHandler.java:132)
at
org.codehaus.xfire.service.binding.ServiceInvocationHandler.invoke(ServiceInvocationHandler.java:107)
at
org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at
org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
at
org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
at
org.apache.servicemix.jsr181.Jsr181ExchangeProcessor.process(Jsr181ExchangeProcessor.java:110)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
at
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:595)
The ldap/ldap.properties file is never read.
This file is placed in
<SM_HOME>/data/smx/service-assemblies/<SA_NAME>/version_1/sus/servicemix-jsr181/<SU_NAME>/ldap/ldap.properties
In the xbean.xml I set the classpath:
<classpath>
<location>.</location>
</classpath>
Where should I place the .properties file?
Thanks
gnodet wrote:
>
> You should be able to do that from the deployed bean using
>
> getClass().getClassLoader().getResource(xx)
>
> or using the thread context class loader.
>
> You need to include the needed resources in the SU, and
> add the <classpath><location>.</location></classpath> tag
> if you use 3.0.
>
> On 11/22/06, Ryan Moquin <[EMAIL PROTECTED]> wrote:
>> Hello, I was searching online and couldn't find an answer to this
>> question.
>> If I package other resources, other than my wsdl, in a JSR 181
>> service-unit
>> that I want to load via the classpath, how would I do it? I tried using
>> my
>> webservice classloader, but it can't find it. Is there a class I can use
>> to
>> grab it?
>>
>> Thanks!
>>
>>
>
>
> --
> Cheers,
> Guillaume Nodet
>
>
--
View this message in context:
http://www.nabble.com/Reading-resources-off-classpath-tf2687650s12049.html#a9311006
Sent from the ServiceMix - User mailing list archive at Nabble.com.