Invoquer une application Java dans un serveur JVM
Il existe plusieurs façons d'appeler une application Java™ qui s'exécute dans un serveur JVM. La méthode utilisée dépend des caractéristiques du serveur JVM.
- Utilisation de points d'accès au serveur, généralement à partir d'un navigateur ou d'une application client : HTTP, MDB, IIOP, etc. Cette méthode ne s'applique qu'aux serveurs Liberty JVM.
- Utilisation des API CICS® telles que EXEC CICS LINK ou EXEC CICS START - cette méthode s'applique à tous les types de serveurs JVM.
Les applications Java d'entreprise développées sous la forme d'un fichier d'archive web (WAR), d'un fichier d'archive d'application d'entreprise (EAR) ou d'un fichier d'archive de bundle d'entreprise (EBA) contenant des fichiers de bundle d'application web (WAB) sont le plus souvent invoquées à l'aide d'une requête HTTP avec une URL spécifique. Aucun lien spécial n'est requis de la part de CICS pour invoquer vos applications à partir d'un navigateur ou d'un client REST. En mode Liberty INTEGRATED, chaque demande est jointe en tant que tâche CICS et est exécutée par défaut sous les transactions CJSA (Web) ou CJSU (Unclassified). Vous pouvez personnaliser l'identifiant de transaction en définissant et en installant des URIMAP appropriés.
Lorsque l'on utilise les API CICS pour exécuter des applications Java, il existe plusieurs façons de cibler les classes Java pour l'exécution. Les approches disponibles dépendent du type de serveur JVM et sont présentées dans le tableau.
| Type de serveur JVM | @CICSProgram cibler n'importe quelle méthode |
CICS-MainClass cibler une méthode main |
Interface fournisseur DFHSJJI |
|---|---|---|---|
| serveur de machine virtuelle Java Liberty | Oui (fichiers WAR et EAR uniquement). Les types POJO et Spring) | Non | Non |
| Serveur JVM OSGi | Oui | Oui | Non |
| Serveur JVM Classpath | Non | Non | Oui |
- Serveur Liberty JVM (
@CICSProgram) Bien que les appels EXEC CICS LINK ou EXEC CICS START ne puissent pas piloter directement les points d'extrémité Web, vous pouvez mettre en œuvre un POJO (Plain Old Java Object) dans votre application Java d'entreprise, l'annoter avec @CICSProgram et invoquer les composants de la logique commerciale par l'intermédiaire des API CICS.
- Serveur JVM OSGi ( CICS-MainClass et @CICSProgram )
L'invocation d'une application Java dans un serveur JVM OSGi peut se faire de deux manières. L'approche CICS-MainClass, décrite ci-dessous, convient à la fois aux applications COMMAREA et CHANNEL, tandis que l'approche
@CICSProgram, plus récente, qui est également utilisée par un serveur JVM Liberty, ne prend en charge que les liens CHANNEL. Les deux approches utilisent une EXEC CICS LINK vers un programme, ou une EXEC CICS START d'une TRANSACTION avec un lien initial vers un programme.- Serveur JVM basé sur Classpath (interface DFHSJJI)
L'invocation d'une fonction Java dans un serveur JVM basé sur le classpath est généralement effectuée dans le cadre d'une capacité spécifique d'un serveur JVM, telle que Batch, Axis2 et SAML. Pour ces capacités, l'interface fournisseur DFHSJJI est fournie ; pour plus d'informations, voir Liaison avec un serveur JVM.
- Axis2 ou serveur JVM SAML (fournisseurs de pipelines)
Voir Configuration d'un serveur JVM pour Axis2 et Configuration de CICS pour SAML.
Utiliser l'approche CICS-MainClass
- Mettez à jour le fichier MANIFEST.MF de votre bundle OSGi pour ajouter un en-tête
CICS-MainClass. L'en-tête doit faire référence au nom pleinement qualifié du paquetage/de la classe dans lequel une méthodemain()existe. Cette valeur sera également enregistrée en tant que service OSGi pouvant être lié à CICS. - Créez manuellement une définition de CICS PROGRAM, assurez-vous que le champ JVMCLASS correspond au nom/classe de paquetage entièrement qualifié dans l'en-tête
CICS-MainClass(le service OSGi pouvant être lié) - ou à un nom d'alias si vous avez utilisé la syntaxeCICS-MainClasspour spécifier un alias. - Utilisez la vue "OSGi services" des opérations INQUIRE OSGISERVICES SPI ou CICS Explorer® pour déterminer quelles classes
main()sont disponibles pour LINK. - Pour l'attribut JVM, spécifiez YES pour indiquer que le programme est un programme Java.
- Pour l'attribut JVMCLASS, spécifiez le nom symbolique du service OSGi. Cette valeur est sensible à la casse.
- Veillez à indiquer le nom du serveur JVMSERVER dans lequel votre application cible a été installée.
Pour plus d'informations sur l'invocation des méthodes principales dans les serveurs JVM OSGi, voir Préparer une application OSGi à être appelée par un programme CICS à l'aide de CICS-MainClass.
Utilisation de l'approche d'annotation @CICSProgram
- Ajoutez l'annotation
@CICSProgramà votre méthode Java cible. - Complétez le nom du programme CICS souhaité dans le cadre de l'annotation.
- Assurez-vous que vous construisez ou compilez votre application avec le processeur d'annotation CICS pour générer les métadonnées dont CICS a besoin. Les métadonnées permettent à CICS d'effectuer un LIEN réussi et de créer automatiquement une définition de PROGRAMME lors de l'installation de l'application. Plusieurs méthodes annotées entraînent la génération de plusieurs définitions de PROGRAM. Si vous avez déjà créé manuellement une définition de PROGRAM, la définition existante est prioritaire et CICS ne l'écrase pas.
Pour plus d'informations, consultez Préparation d'une application OSGi à appeler par un programme CICS à l'aide de @CICSProgram et Préparation d'une application Enterprise Java à appeler par un programme CICS, qui décrivent également comment appeler les composants de logique métier des applications Enterprise Java.
Résultats
Vous avez créé la définition pour rendre votre application Java accessible à d'autres composants. Lorsque CICS reçoit la demande dans le serveur JVM cible, il invoque la classe Java ou l'application Web spécifiée dans un nouveau thread Java CICS. Si le service OSGi ou l'application Web associé n'est pas enregistré ou est inactif, une erreur est renvoyée au programme appelant.