Domanda

Al giorno d'oggi la nostra applicazione si interfaccia con molti servizi web.Abbiamo il nostro pacchetto che qualcuno ha scritto qualche anno fa utilizzando UTL_HTTP e generalmente funziona, ma necessita di un po' di hardcoding della busta SOAP per funzionare con determinati sistemi.Vorrei renderlo più generico, ma non ho esperienza per sapere quanti scenari dovrei affrontare.Le variazioni riguardano quali spazi dei nomi devono essere dichiarati e il formato degli elementi.Dobbiamo gestire sia le chiamate semplici con pochi parametri, sia quelle che fanno passare una grande quantità di dati in una stringa codificata.

So che 10g ha UTL_DBWS, ma non ci sono molti casi d'uso online.È abbastanza stabile e flessibile per un uso generale? Documentazione

È stato utile?

Soluzione

ho usato UTL_HTTP che è semplice e funziona.Se affronti una sfida con il tuo pacchetto, probabilmente puoi trovare una soluzione in uno dei tanti pacchetti wrapper attorno a UTL_HTTP in rete (Google "consuma servizi web da pl/sql", portandoti ad es.http://www.oracle-base.com/articles/9i/ConsumingWebServices9i.php)

Il motivo per cui nessuno lo usa UTL_DBWS è che non funziona in un database installato di default.È necessario caricare un sacco di classi Java nel database, ma le istruzioni standard sembrano essere difettose: il processo genera errori Java a destra e a sinistra e alla fine fallisce.Sembra che pochissime persone siano state disposte a prendersi il tempo per rintracciare le dipendenze dei pacchetti per far funzionare questo approccio.

Altri suggerimenti

Ho affrontato questa sfida e ho trovato e installato il pacchetto "SOAP API" suggerito da Sten su Oracle-Base.Fornisce alcune buone funzionalità di creazione di buste oltre a UTL_HTTP.

Tuttavia c'erano alcune limitazioni relative alla tua domanda.SOAP_API presuppone che tutte le richieste siano semplici XML, ovverouna sola gerarchia di tag di livello.

Ho esteso il pacchetto SOAP_API per consentire al codice client di inserire arbitrariamente un tag aggiuntivo.Quindi puoi inserire un sottolivello come , continuare a costruire la richiesta e ricordarti di inserire un tag di chiusura.

Il problema dello spazio dei nomi era un ostacolo per il progetto: diversi livelli di XML avevano spazi dei nomi diversi.

Un utile strumento di debug che ho utilizzato è TCP Trace di Pocket Soap.www.pocketsoap.com/tcptrace/ L'hed lo hai impostato come un proxy e guarda la richiesta HTTP e gli oggetti di risposta tra il codice client e server.

Detto questo, ci piace molto avere un client SOAP nel database: abbiamo pieno accesso a tutti i dati e al codice PLSQL esistente, possiamo facilmente scorrere i cursori e chiamare l'app esterna tramite SOAP quando necessario.È stato molto più rapido e semplice rispetto alla distribuzione di un livello intermedio con molto codice Java o .NET personalizzato.Buona fortuna e fammi sapere se desideri vedere il mio codice API SOAP migliorato.

Abbiamo anche utilizzato UTL_HTTP in modo simile a quello che hai descritto.Non ho alcuna esperienza diretta con UTL_DBWS, quindi spero che tu possa continuare con qualsiasi informazione/esperienza che puoi raccogliere.

@kogus, no, è un design abbastanza buono per molte applicazioni.PL/SQL è un linguaggio di programmazione completo che è stato utilizzato per molte grandi applicazioni.

Controlla questo post più vecchio.Devo essere d'accordo con la risposta n. 1 di quel post;è difficile immaginare uno scenario in cui questo potrebbe essere un buon progetto.

Non puoi scrivere un servizio, o un'applicazione autonoma, che parli con una tabella nel tuo database?Quindi potresti implementare quello che vuoi come trigger su quel tavolo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top