Question

J'ai un service Web simple qui utilise une base de données Oracle. Cependant, quand je tester le service en interne, il fonctionne très bien, appeler le service Web par mon client (sur la même machine, mais dans un autre type de guerre) jette un InvocationTargetException. Je l'ai enfin découvert c'est un problème avec l'instanciation OracleDriver. Il ne jette pas une exception du tout, donc je ne peux pas trouver ce que l'erreur est.

recherche sur Google a seulement fourni une solution d'utilisation oracle.jdbc.driver.OracleDriver au lieu de oracle.jdbc.OracleDriver mais cela ne semble pas résoudre quoi que ce soit. Le pot J'utilise est ojdbc14.jar et, pour autant que je peux dire, il est inclus dans le chemin de classe pour le service web correctement ... car il fonctionne quand je teste le service avec une méthode simple principale.

EDIT: Le InvocationTargetException est généré par un AxisFault à partir du serveur Axis. Le InvocationTargetException est une classe wrapper, et mes tentatives pour essayer d'extraire l'exception en utilisant .getCause () renvoie toujours null.

Je suis le service en utilisant le déploiement jboss et incluais le fichier du pilote JAR dans la bibliothèque de la source, mais pas pour le serveur. Y compris le conducteur / jboss / server / default / lib a résolu.

Était-ce utile?

La solution

2? WARs Je suppose que votre ojdbc.jar est situé dans WEB-INF / lib de WAR du service Web.

Peut-être que votre WAR est à l'intérieur d'un EAR, vous devez donc faire référence au conducteur MANIFEST.MF.

Plus d'infos: http://java.sun.com/j2ee/verified/ packaging.html

Autres conseils

Sans plus d'informations, il est difficile de fournir des suggestions concrètes; Je l'ai cependant eu l'expérience avec un pilote Oracle qui tente de se connecter via les bibliothèques OCI autochtones, ne trouve pas les bibliothèques installées sur le système, et jette un InvocationTargetException. Tout cela est de la mémoire très vague, de sorte que votre kilométrage sera certainement varier.

Il est été un certain temps, mais si ma mémoire, j'ai eu un cas où l'URL de connexion a été correctement configuré, et OracleDriver (ou l'un de ses emballages) itérés un ensemble de méthodes de connexion possibles, en essayant de trouver un qui a travaillé . Dans le cas où l'URL a été correctement configuré, il n'a jamais eu à la tentative OCI (la méthode de connexion mince tentative est venu d'abord), mais si l'URL de connexion était mal configuré, la tentative mince échouerait, ce qui provoque la tentative OCI, qui a ensuite également échoué parce que le client OCI n'a pas été installé sur l'hôte (résultant en une InvocationTargetException.)

Alors, certaines choses à vérifier:

  1. est l'URL de connexion valide? Si vous utilisez la même URL de connexion dans les deux endroits, êtes-vous sûr que les deux processus sont obligatoires au même NIC? Si elles lient à différents NPI, il peut provoquer des bizarreries de connexion, même sur le même hôte.
  2. L'environnement même dans les deux cas - si le client est OCI s'utilisé dans votre environnement de développement, il est probable que plusieurs variables d'environnement dont il dépend. Si ces variables d'environnement ne sont pas définies de manière identique dans l'environnement où le conteneur de servlet est en cours d'exécution, je pense comportement différent.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top