Domanda

Ho un semplice servizio Web che utilizza un database Oracle. Quando ho testare il servizio internamente funziona benissimo, tuttavia, chiamando il servizio web attraverso il mio cliente (sulla stessa macchina, ma in una guerra diversa) genera un InvocationTargetException. Ho finalmente scoperto che è un problema con un'istanza del OracleDriver. Essa non genera alcuna eccezione a tutti, quindi non posso scoprire che cosa l'errore è.

Googling ha fornito solo una soluzione di utilizzare oracle.jdbc.driver.OracleDriver invece di oracle.jdbc.OracleDriver, ma che non sembra risolvere nulla. Il vaso che sto utilizzando è ojdbc14.jar e, per quanto posso dire, è incluso nel percorso di classe per il servizio Web correttamente ... dal momento che funziona quando prova il servizio con un semplice metodo principale.

EDIT: L'InvocationTargetException è generata da un AxisFault dal server Axis. L'InvocationTargetException è una classe wrapper, ed i miei tentativi per cercare di estrarre l'eccezione utilizzando .getCause () restituiscono sempre nullo.

Io sono la distribuzione del servizio utilizzando JBoss ed è stato incluso il file JAR del driver nella libreria per la sorgente, ma non per il server. Compreso il conducente / jboss / server / default / lib risolto esso.

È stato utile?

Soluzione

2 guerre? Suppongo che il tuo ojdbc.jar si trova all'interno WEB-INF / lib del WAR del servizio Web.

Forse il tuo WAR è all'interno di un EAR, così si dovrebbe fare riferimento al conducente MANIFEST.MF.

Più informazioni: http://java.sun.com/j2ee/verified/ packaging.html

Altri suggerimenti

Senza ulteriori informazioni, è difficile fornire suggerimenti concreti; Ho però avuto esperienza con un driver Oracle che tenta di connettersi tramite librerie native OCI, non riesce a trovare quelle librerie installate sul sistema, e lancia un InvocationTargetException. Questo è tutto dalla memoria molto vago, così il vostro chilometraggio sarà quasi certamente variare.

E 'stato un po', ma se la memoria non mi inganna, ho avuto un caso in cui l'URL di connessione è stato configurato in modo non corretto, e OracleDriver (o uno dei suoi involucri) iterata attraverso una serie di possibili metodi di connessione, cercando di trovare uno che ha lavorato . Nel caso in cui l'URL è stato configurato correttamente, non ha mai avuto al tentativo OCI (il sottile tentativo di metodo di connessione è venuto in primo luogo), ma se l'URL di connessione è stato configurato in modo errato, il tentativo sottile fallirebbe, causando il tentativo OCI, che poi non è riuscito perché il client OCI non è stato installato sulla macchina (con conseguente InvocationTargetException.)

Quindi, alcune cose da controllare:

  1. è l'URL connessione valida? Se si utilizza lo stesso URL di connessione in entrambi i luoghi, sei sicuro che entrambi i processi sono vincolanti per la stessa scheda di rete? Se essi sono vincolanti per diverse schede di rete, potrebbe causare stranezze di connessione, anche sullo stesso host.
  2. L'ambiente lo stesso in entrambi i casi - se il cliente OCI si sta abituando nel proprio ambiente di sviluppo, ci sono probabilmente diverse variabili d'ambiente dipende. Se queste variabili di ambiente non sono impostate in modo identico nell'ambiente in cui il servlet container è in esecuzione, mi aspetto un comportamento diverso.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top