Frage

Ich habe einen einfachen Web-Service, eine Oracle-Datenbank verwendet. Wenn ich den Dienst intern zu testen es funktioniert gut, aber durch meinen Klienten den Web-Service Aufruf (auf der gleichen Maschine, sondern in einer anderen WAR) eine invocationtargetexception wirft. Ich habe schließlich entdeckt, es ist ein Problem mit dem OracleDriver Instanziierung. Es wirft keine Ausnahme überhaupt, damit ich nicht herausfinden kann, was der Fehler ist.

Googeln hat vorgesehen nur eine Lösung mit oracle.jdbc.driver.OracleDriver statt oracle.jdbc.OracleDriver aber das scheint nicht, etwas zu reparieren. Das Gefäß Ich verwende ist ojdbc14.jar und, soweit ich das beurteilen kann, ist es in den Klassenpfad für den Webdienst ordnungsgemäß enthalten ist ... da es funktioniert, wenn ich den Dienst mit einem einfachen Hauptverfahren zu testen.

EDIT: Die InvocationTargetException wird durch einen AxisFault von dem Axis-Server generiert. Die invocationtargetexception ist eine Wrapper-Klasse, und meine Versuche, um zu versuchen, die Ausnahme mit .getCause () immer null zurück zu extrahieren.

Ich bin die Bereitstellung des Dienstes mit Jboss und wurde einschließlich der Treiber-JAR-Datei in der Bibliothek für die Quelle, aber nicht für den Server. Einschließlich des Fahrers in / jboss / server / default / lib aufgelöst es.

War es hilfreich?

Lösung

2 WARs? Ich nehme Ihre ojdbc.jar innerhalb WEB-INF / lib des Webdienstes WAR befindet.

Vielleicht ist Ihr WAR ist innerhalb einer EAR, so sollten Sie den Treiber in MANIFEST.MF verweisen.

Mehr Infos: http://java.sun.com/j2ee/verified/ packaging.html

Andere Tipps

Ohne weitere Informationen ist es schwer, konkrete Vorschläge zu liefern; Ich habe jedoch hatte Erfahrung mit einem Oracle-Treiber, der über native OCI-Bibliotheken zu verbinden versucht, scheitert diese Bibliotheken auf dem System installiert zu finden, und wirft einen InvocationTargetException. Das ist alles von sehr vage Erinnerung, so Ihre Laufleistung wird mit ziemlicher Sicherheit variieren.

Es ist eine Weile her, aber wenn ich mich recht erinnere, hatte ich einen Fall, in dem die Verbindung URL falsch konfiguriert wurde, und OracleDriver (oder einer seiner Wrapper) iteriert durch eine Reihe von möglichen Verbindungsmethoden versuchen, einen zu finden, die funktioniert . Im Fall, dass die URL korrekt konfiguriert wurde, es kam nie auf den OCI Versuch (der dünne Verbindungsmethode Versuch kam zuerst), aber wenn die Verbindung URL falsch konfiguriert war, würde der dünne Versuch scheitern, den OCI Versuch verursacht, die dann auch gescheitert weil der OCI-Client wurde auf dem Host nicht installiert ist (was zu einer InvocationTargetException.)

Also, um einige Dinge zu überprüfen:

  1. Ist die Verbindung URL gültig? Wenn Sie die gleiche Verbindung URL in beiden Orten verwenden, sind Sie sicher, dass beide Prozesse auf die gleiche NIC binden? Wenn sie sich auf verschiedene NICs sind verbindlich, es könnte Verbindung Merkwürdigkeiten verursachen, sogar auf dem gleichen Host.
  2. Ist die Umgebung das gleiche in beiden Fällen - wenn der OCI-Client in Ihrer Entwicklungsumgebung zu gewöhnen, gibt es wahrscheinlich mehrere Umgebungsvariablen es hängt davon ab. Wenn diese Umgebungsvariablen sind nicht identisch in der Umgebung, in der Servlet-Container ausgeführt wird, legen würde ich ein anderes Verhalten erwarten.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top