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.

Reply via email to