Question

Notre application s’interface aujourd’hui avec de nombreux services Web.Nous avons notre propre package que quelqu'un a écrit il y a quelques années en utilisant UTL_HTTP et il fonctionne généralement, mais nécessite un codage en dur de l'enveloppe SOAP pour fonctionner avec certains systèmes.J'aimerais le rendre plus générique, mais je manque d'expérience pour savoir à combien de scénarios je devrais faire face.Les variations concernent les espaces de noms qui doivent être déclarés et le format des éléments.Nous devons gérer à la fois les appels simples avec quelques paramètres et ceux qui transmettent une grande quantité de données dans une chaîne codée.

Je sais que 10g a UTL_DBWS, mais il n'y a pas un grand nombre de cas d'utilisation en ligne.Est-il suffisamment stable et flexible pour un usage général ? Documentation

Était-ce utile?

La solution

j'ai utilisé UTL_HTTP ce qui est simple et fonctionne.Si vous rencontrez un problème avec votre propre package, vous pouvez probablement trouver une solution dans l'un des nombreux packages wrapper autour de UTL_HTTP sur le net (Google "consommer des services Web à partir de pl/sql", vous conduisant par exemple àhttp://www.oracle-base.com/articles/9i/ConsumingWebServices9i.php)

La raison pour laquelle personne n'utilise UTL_DBWS est qu'il n'est pas fonctionnel dans une base de données installée par défaut.Vous devez charger une tonne de classes Java dans la base de données, mais les instructions standard semblent défectueuses : le processus génère des erreurs Java à droite et à gauche et échoue finalement.Il semble que très peu de personnes aient accepté de prendre le temps de rechercher les dépendances des packages afin de faire fonctionner cette approche.

Autres conseils

J'ai relevé ce défi et j'ai trouvé et installé le package « API SOAP » suggéré par Sten sur Oracle-Base.Il fournit de bonnes fonctionnalités de création d'enveloppe en plus de UTL_HTTP.

Cependant, votre question présentait certaines limites.SOAP_API suppose que toutes les requêtes sont du XML simple, c'est-à-direune seule hiérarchie de balises de couche.

J'ai étendu le package SOAP_API pour permettre au code client d'insérer arbitrairement une balise supplémentaire.Vous pouvez donc insérer un sous-niveau tel que , continuer à construire la requête et penser à insérer une balise de fermeture.

Le problème de l'espace de noms était un problème pour le projet : différents niveaux de XML avaient des espaces de noms différents.

Un bon outil de débogage que j'ai utilisé est TCP Trace de Pocket Soap.www.pocketsoap.com/tcptrace/ Vous le configurez comme un proxy et regardez les objets de demande et de réponse HTTP entre le client et le code du serveur.

Cela dit, nous aimons vraiment avoir un client SOAP dans la base de données - nous avons un accès complet à toutes les données et au code PLSQL existant, pouvons facilement parcourir les curseurs et appeler l'application externe via SOAP en cas de besoin.C'était beaucoup plus rapide et plus simple que de déployer un niveau intermédiaire avec beaucoup de code Java ou .NET personnalisé.Bonne chance et faites-moi savoir si vous souhaitez voir mon code API SOAP amélioré.

Nous avons également utilisé UTL_HTTP d'une manière similaire à ce que vous avez décrit.Je n'ai aucune expérience directe avec UTL_DBWS, j'espère donc que vous pourrez donner suite à toutes les informations/expériences que vous pourrez recueillir.

@kogus, non, c'est une assez bonne conception pour de nombreuses applications.PL/SQL est un langage de programmation à part entière qui a été utilisé pour de nombreuses grandes applications.

Regarde ça article plus ancien.Je dois être d'accord avec la réponse n°1 de ce message ;il est difficile d'imaginer un scénario dans lequel cela pourrait être une bonne conception.

Ne pouvez-vous pas écrire un service, ou une application autonome, qui communiquerait avec une table de votre base de données ?Ensuite, vous pouvez implémenter ce que vous voulez comme déclencheur sur cette table.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top