Traitement des fichiers XML volumineux à travers la Suite SOA

La lecture des fichiers en utilisant la SOA Suite est très facile car le File Adapter est un adaptateur puissant. Cependant, le traitement de fichiers volumineux est moins trivial.

Le traitement de ces gros fichiers XML consomme beaucoup de mémoire et peut devenir un goulot d’étranglement, en particulier lorsque plusieurs utilisateurs chargent de gros fichiers XML en même temps. Il peut aussi provoquer un blocage du serveur en raison d’un problème « OutOfMemory ».
Afin de palier ce problème, il est préférable de fragmenter ces fichiers en petits morceaux (Chunking) plutôt que de les charger en mémoire en une seule fois.
Cette fonctionnalité du File Adapter ne peut être utilisée que depuis un BPEL, son implémentation diffère entre les versions 11g et 12c de la SOA Suite.
SOA 11g :

  • Ouvrir le fichier composite et ajouter un File Adapter.
  • Choisir le type d’opération : « Synchronous Read File ».

Choix de l'opération

  • La lecture par fragment n’est pas configurable via l’assistant, pour l’activer il est nécessaire de modifier manuellement le paramétrage du File Adapter.
  • Ouvrir le fichier (.jca) et le modifier comme illustré ci-dessous :

image003

  • Il s’agit de modifier la propriété « className » de l’élément « interaction-spec » à  «oracle.tip.adapter.file.outbound.ChunkedInteractionSpec », et de rajouter la propriété qui définit la taille du fragment à lire « ChunkSize », par exemple <property name=”ChunkSize” value=”55″/>.
  • Le BPEL est à modifier afin d’invoquer le file-Adapter en boucle pour lire les différents fragments et les traiter séparément.

 
SOA 12c :
L’assistant de configuration du File Adapter dans la SOA 12c a évolué en intégrant la fonctionnalité de lecture des fichiers par fragment.
Choix de l'opérationIl n’est donc pas nécessaire de modifier manuellement le fichier de paramétrage du File Adapter.
L’intégration du File Adapter dans le BPEL reste similaire entre la 11g et la 12c.