我正在编写一个调用Oracle Web服务的应用程序。我提供了Web服务客户端代码。
此应用程序使用URLClassLoader的自定义子类在运行时加载jar。从我的本地计算机运行单元测试工作正常,但是当我在服务器上部署应用程序并运行它时,我收到以下错误。其他类/ jar通过自定义ClassLoader正常加载。
不确定为什么会这样?也许FactoryFinder使用单独的ClassLoader实例?任何帮助表示赞赏。谢谢!
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)
答案 0 :(得分:0)
这是我提出的结论。
ServiceFactory使用它自己的类加载机制(显然与我的自定义类加载器不同)。
我不得不使用这个hack http://forums.sun.com/thread.jspa?threadID=300557将jar添加到系统类加载器的类路径中。