views:

20

answers:

1

Hi all,

I am writing an application that invokes an Oracle web service. The web service client code was provided me.

This application uses a custom subclass of URLClassLoader to load jars at run-time. Running the unit tests from my local machine works fine, however when I deploy the application on the server and run it, I get the following error. Other classes/jars are loading fine through the custom ClassLoader.

Not sure why this is happening? Maybe FactoryFinder is using a separate ClassLoader instance? Any help is appreciated. Thanks!

    javax.xml.rpc.ServiceException: Provider oracle.j2ee.ws.client.ServiceFactoryImpl not found
      at javax.xml.rpc.FactoryFinder.newInstance(FactoryFinder.java:44)
      at javax.xml.rpc.FactoryFinder.find(FactoryFinder.java:137)
      at javax.xml.rpc.ServiceFactory.newInstance(ServiceFactory.java:69)
      at com.mycomp.myapp.oracle.client.TSClient.<init>(TSClient.java:34)
      at com.mycomp.myapp.oracle.LaborHours.update(LaborHours.java:92)
      at com.mycomp.myapp.oracle.OracleConnection.updateMetrics(OracleConnection.java:73)
      at com.mycomp.myapp.Project.crawl(Project.java:150)
      at com.mycomp.myapp.Main.main(Main.java:302)
A: 

This is the conclusion I came up with.

ServiceFactory uses it's own class loading mechanism (which apparently is a different instance than my custom class loader).

I had to use this hack http://forums.sun.com/thread.jspa?threadID=300557 to add the jars to the system class loader's class path.

lucks