2010-06-18 3 views
0

J'écris une application qui appelle un service Web Oracle. Le code client du service Web m'a été fourni.Fournisseur oracle.j2ee.ws.client.ServiceFactoryImpl introuvable

Cette application utilise une sous-classe personnalisée de URLClassLoader pour charger les fichiers jar au moment de l'exécution. L'exécution des tests unitaires à partir de ma machine locale fonctionne correctement. Toutefois, lorsque je déploie l'application sur le serveur et que je l'exécute, j'obtiens l'erreur suivante. Les autres classes/jars se chargent correctement via le ClassLoader personnalisé.

Vous ne savez pas pourquoi cela se produit? Peut-être que FactoryFinder utilise une instance de ClassLoader distincte? Toute aide est appréciée. Merci!

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) 

Répondre

0

C'est la conclusion que je suis venu avec.

ServiceFactory utilise son propre mécanisme de chargement de classe (qui est apparemment une instance différente de celle de mon chargeur de classe personnalisé).

J'ai dû utiliser ce hack http://forums.sun.com/thread.jspa?threadID=300557 pour ajouter les jars au chemin de classe du chargeur de classe système.