JEXIT

La fonction JEXIT fournit un moyen d'établir un lien avec une méthode dans une classe Java externe. Cette fonction permet de gérer des types de primitives simples, des objets simples et complexes.

Deux paramètres texte sont obligatoires pour la fonction JEXIT. Le premier paramètre de texte est le nom de classe ou la clé ,selon la méthode utilisée). Le second paramètre de texte est le nom de la méthode. Il existe deux paramètres texte facultatifs pour les données.

La première utilisation de la fonction JEXIT crée un objet qui repose sur le nom de classe spécifié. Ensuite, il appelle la méthode Java nommée, avec d'éventuels paramètres, sur cet objet. Une fois la méthode de l'objet Java appelée, JEXIT détruit automatiquement l'objet Java. Si plusieurs appels sur le même objet Java sont requis, la fonction "<init>" prédéfinie peut être utilisée dans le second paramètre de Signification 1. La clé renvoyée à partir de la fonction "<init>" fait désormais référence à un objet Java spécifique et peut ensuite être utilisée plusieurs fois comme premier paramètre dans les appels de fonction de Signification 2.

La seconde utilisation de la fonction JEXIT appelle la méthode Java nommée, avec d'éventuels paramètres, sur un objet Java spécifique. La méthode est appelée avec la clé spécifiée. Cette méthode permet de manipuler des objets Java tout au long du cycle, d'exécution de la mappe. Ces objets Java sont stockés dans le pool d'objets HCL Link et sont référencés pendant l'exécution de mappe avec la clé spécifiée. La clé spécifiée peut être retournée depuis un appel d'utilisation 1 ou 2 JEXIT, en particulier lorsqu'un objet Java non scalaire et complexe doit être renvoyé.

La fonction JEXIT n'est pas prise en charge sous CICS, Batch ou MVS.

Prérequis

Pour utiliser JEXIT, effectuez les étapes de configuration suivantes, selon le produit que vous utilisez.

Pour Command Server, ajoutez les classes Java à votre chemin d'accès aux classes ou ajoutez les fichiers JAR dans le fichier install_dir/dtx.ini.

Ajoutez les fichiers JAR aux instructions jar sous la section [External Jar Files] du fichier dtx.ini. Pour chaque fichier JAR, mettez en commentaire une instruction jar et ajoutez le chemin d'accès complet et le nom du fichier JAR, y compris l'extension de fichier. Si une instruction jar est déjà définie sur une valeur, ajoutez le fichier JAR à l'instruction jar suivante dans la séquence. Par exemple, si l'instruction jar1 et définie sur une valeur, et que l'instruction jar2 n'est pas définie sur une valeur, ajoutez votre fichier JAR à l'instruction jar2.

Pour IBM Integration Bus, sur les systèmes d'exploitation Windows, copiez le fichier JAR dans le dossier de classes dans le chemin d'installation de votre version d'IBM Integration Bus. Par exemple, copiez le fichier JAR dans %MQSI_WORKPATH%\shared-classes. Sur les systèmes d'exploitation UNIX, copiez le fichier JAR dans $MQSI_WORKPATH/shared-classes.

Si vous utilisez l'utilisation 1, un constructeur public par défaut doit être déclaré dans la classe Java externe. Si le constructeur par défaut n'est pas disponible ou nécessaire, vous pouvez utiliser la méthode "<init>" pour instancier l'objet Java, mais uniquement lorsqu'un constructeur de classe est défini avec un ou deux paramètres string-type.

Syntaxe

JEXIT ("single-text-expression" , "single-text-expression" , ["single-text-expression"] , ["single-text-expression"])

Renvoie

Un élément texte unique.

Utilisation 1

JEXIT (class_name, method_name, [input_to_the_function_or_key], [input_to_the_function_or_key])

Avec cette approche, vous fournissez une classe Java et un nom de méthode, ainsi que deux entrées facultatives à la fonction.

Lorsque la fonction JEXIT est utilisée dans une règle de mappe, lors de la phase d'exécution elle procède à l'instanciation d'une machine virtuelle Java (JVM). La machine virtuelle Java lit votre fichier .class ou .jar et crée un objet en fonction de la classe Java définie. La méthode, ainsi que tous les paramètres spécifiés, est alors appelée sur l'objet.

Lorsque l'objet renvoyé est un objet complexe, un identificateur unique (clé) est créé et peut être utilisé pour référencer l'objet dans un pool d'objets.

Tous les paramètres JEXIT sont des chaînes de texte. Le nom de classe et le nom de méthode sont les deux paramètres requis. Les deux paramètres facultatifs sont généralement des données en entrée. Lors de la phase d'exécution, les chaînes sont converties au format UTF-8 et communiquées à la méthode Java et la sortie de la méthode Java est une chaîne de texte au format UTF-8.

Les objets de classe Java suivants sont convertis en interne en chaînes et renvoyés à la mappe :
java.lang.Void
java.lang.Short
java.lang.Number
java.lang.Long
java.lang.Integer
java.lang.Float
java.lang.Double
java.lang.Byte
java.lang.Boolean
java.lang.String
java.lang.Character

Utilisation 2

JEXIT (key, method_name, [input_to_the_function_or_key], [input_to_the_function_or_key])

La seconde utilisation de la fonction JEXIT est identique à celle de Signification 1, sauf qu'il est supposé que vous disposez déjà d'une clé référençant un objet dans le pool d'objets. Dans ce scénario, vous utilisez la fonction JEXIT pour appeler une méthode sur un objet à l'aide de la clé comme premier paramètre au lieu du nom de classe.

Chaque fois que la fonction JEXIT renvoie une clé, l'objet Java associé doit être supprimé avant que la mappe termine le traitement. L'objet peut être supprimé à l'aide de la méthode JEXIT "<destroy>" prédéfinie. Si la méthode "<destroy>" n'est pas appelée, il y a fuite de mémoire JVM. Pour empêcher la fragmentation et/ou l'épuisement du segment JVM, assurez-vous que toutes les références d'objet renvoyées par la fonction JEXIT sont supprimées. Pour supprimer ces références, utilisez la fonction JEXIT comme suit :
JEXIT("key", "<destroy>")

Identification des incidents

Pour extraire des messages d'erreur pour JEXIT, vous pouvez utiliser les fonctions VALID et FAIL dans votre règle de mappe. Par exemple :
=VALID(JEXIT("key", "method_name",  "data" ), FAIL(LASTERRORMSG(  )  )  )